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
}
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.
Äolingamenfel