PHP/Java/C++-Frameworks für die deklarative SQL-zu-REST-API-Bindung

Welche Bibliotheken/Frameworks gibt es, falls vorhanden, um relationale SQL-Datenbanken auf deklarative Weise an eine RESTful-API zu binden/zu "rüsten"?

Kurz gesagt, durch Angabe der Namen der Tabellen und Felder (neben Regeln und Flags) würde die Bibliothek/das Framework eine RESTful-API generieren, um auf die Datenbank zuzugreifen bzw. sie zu ändern.

Ich hätte gerne eine leistungsstarke (aber optionale) Kontrolle über die Bindungen, um bei Bedarf einfach benutzerdefinierte Logik angeben zu können.

Ich suche nach etwas Ähnlichem (C++ Pseudocode) :

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;
            }
        });

Der obige Pseudocode könnte mit den folgenden Anforderungen so funktionieren:

// 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 passt ziemlich gut zu dieser Beschreibung. Wenn Sie Modelle erstellen (Bindungen im Code, die SQL-Tabellen mit Klassen verbinden), können Sie automatisch Routen und Endpunkte für REST-konforme Anforderungen erstellen, die JSON zurückgeben können. Es ist jedoch in Ruby, nicht in PHP, Java oder C++, daher bin ich mir nicht sicher, ob es für Sie funktioniert.

Antworten (1)

Werfen Sie einen Blick auf http://www.bravo-kernel.com/2015/04/how-to-build-a-cakephp-3-rest-api-in-minutes/

Ich habe CakePHP in der Vergangenheit verwendet, um eine schnelle und einfache GUI für den Zugriff auf die DB zu erstellen, habe aber den REST-API-Teil nicht ausprobiert. Scheint aber einfach zu bedienen.