Marcos PHP/Java/C++ para vinculación de SQL declarativo a API REST

¿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
}
Ruby on Rails se ajusta bastante fácilmente a esta descripción. Cuando crea modelos (enlaces en el código que conectan tablas SQL a clases), puede crear automáticamente rutas y puntos finales para solicitudes REST-ful que pueden devolver JSON. Sin embargo, está en Ruby, no en PHP, Java o C ++, por lo que no estoy seguro de si funciona para usted.

Respuestas (1)

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.