¿Qué bibliotecas/marcos, si los hay, existen para vincular/"andamiar" bases de datos relacionales SQL a una API RESTful de manera declarativa?
En resumen, al especificar los nombres de las tablas y los campos (junto con las reglas y las banderas), la biblioteca/marco generaría una API RESTful para acceder/modificar la base de datos.
Me gustaría un control potente (pero opcional) sobre los enlaces, para especificar fácilmente la lógica personalizada si es necesario.
Estoy buscando algo similar a esto (pseudocódigo C++) :
context ctx;
// Bind to a MySQL database. Send/receive JSON.
api_binder<mysql, json> ab(ctx);
ab.bind_table("users", "api/users")
.bind_field<int>("id", flags::readonly | flags::primary_key)
.bind_field<string>("name")
.bind_field<unsigned int>("age")
.on_change([&ctx](auto old_value, auto new_value)
{
if(new_value > 0 && new_value < 150)
{
return new_value;
}
else
{
// Reply with an informative message.
ctx.send_msg("Invalid value for field `age`.");
return old_value;
}
});
El pseudocódigo anterior podría funcionar así con las siguientes solicitudes:
// Request:
GET site.com/api/users
// Response:
[
{
"id": 0,
"name": "Name0",
"age": 30
},
{
"id": 1,
"name": "Name1",
"age": 40
}
]
// Request:
GET site.com/api/users/by/name?value=Name0
// Response:
[
{
"id": 0,
"name": "Name0",
"age": 30
}
]
// Request:
POST site.com/api/users
// Request body:
{
"name": "Name2",
"age": 900
}
// Response (error):
{
"msg": "Invalid value for field `age`."
}
// Request:
POST site.com/api/users
// Request body:
{
"name": "Name2",
"age": 90
}
// Response (OK):
{
"id": 2,
"name": "Name2",
"age": 90
}
Eche un vistazo a http://www.bravo-kernel.com/2015/04/how-to-build-a-cakephp-3-rest-api-in-minutes/
He usado CakePHP en el pasado para hacer una GUI rápida y fácil para acceder a la base de datos, pero no probé la parte de la API REST. Sin embargo, parece fácil de usar.
Aeolingamenfel