Какие библиотеки/фреймворки, если таковые имеются, существуют для привязки/«каркаса» реляционных баз данных SQL к RESTful API декларативным образом?
Короче говоря, указав имена таблиц и полей (наряду с правилами и флагами), библиотека/фреймворк сгенерирует RESTful API для доступа/изменения базы данных.
Я хотел бы мощный (но необязательный) контроль над привязками, чтобы при необходимости легко указывать пользовательскую логику.
Я ищу что-то похожее на это (псевдокод С++) :
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;
}
});
Приведенный выше псевдокод может работать так со следующими запросами:
// 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
}
Взгляните на http://www.bravo-kernel.com/2015/04/how-to-build-a-cakephp-3-rest-api-in-minutes/
Я использовал CakePHP в прошлом, чтобы сделать быстрый и простой графический интерфейс для доступа к БД, но не пробовал часть REST API. Хотя кажется простым в использовании.
Эолингаменфель