¿Sería capaz de recomendar una biblioteca/herramienta simple de código abierto para ejecutar en Linux, que serviría una API similar a REST básicamente sirviendo el contenido de las bases de datos SQL (en Postgres) a través de HTTP con URL amigables? Se prefiere Python, pero no es obligatorio.
por ejemplo, si tuviera una base de datos con dos tablas:
employees (id, name, city, dep_id)
departments (id, name)
Me gustaría enviar fácilmente solicitudes HTTP como:
GET http://$HOST/employees?city=Paris
GET http://$HOST/employees?dep_id=4&city=Berlin,Paris
GET http://$HOST/departments?name=Legal,Finance
etc. Soy flexible con cualquier sintaxis que deba usarse para las URL. Pero el objetivo es evitar el trabajo manual de mapear estas tablas a través de ORM, luego mapear eso a URL, etc. Idealmente, no se necesita programación (pero está permitido si quisiera agregar un formato de salida personalizado, etc.) También entiendo esta herramienta sólo podía ofrecer SELECT
con sólo cláusulas limitadas WHERE
.
Puede probar el servidor HTTP nginx junto con el módulo ngx_postgres . ngx_postgres
permite nginx
comunicarse con PostgreSQL
la base de datos. Sus requisitos básicos están satisfechos por lo que veo:
ngx_postgres
se debe especificar la configuración para asignar direcciones URL a consultas de bases de datos.ngx_postgres
la página web).PostgreSQL
como RDBMS.HTTP
protocolo.nginx
es un software ligero.No especificó el formato de respuesta que desea devolver a los clientes, pero ngx_postgres
es compatible con JSON.
RestifyDB ( http://restifydb.com ) es una solución. Es de código abierto y se puede usar de forma gratuita (a menos que necesite parchear, etc., para lo cual hay una versión comercial disponible. Aunque no he usado slash DB ( https://www.slashdb.com/ ) es otra solución que funciona de manera similar.
Sandman2 hace exactamente lo que quieres, en python y se anuncia comoAutomatically generate a RESTful API service for your legacy database. No code required!
Utiliza SQLAlchemy para las interacciones de la base de datos (y es compatible con cualquiera de sus muchas bases de datos compatibles) y ofrece no solo una API REST sino también una interfaz de administración web decente.
Una vez configurado, debería poder emitir consultas como http://$HOST/employees?city=Paris
y similares, aunque es posible que no sea compatible http://$HOST/employees?dep_id=4&city=Berlin,Paris
cuando solicite varios valores a la vez... ¡Para probar!
cibernético