У меня есть настольное приложение с Postgresql в качестве базы данных. Бизнес-логика в основном в хранимых процедурах. Таким образом, хранимые процедуры действуют как API для настольного приложения.
Теперь я хочу создать веб-версию подмножества приложения, чтобы пользователи могли запускать его на мобильных устройствах. Но клиентский javascript не может напрямую обращаться к базе данных, поэтому мне нужно разработать веб-сервис HTTP. Поскольку это приложение для локальной сети, я думаю, что разработка «нормального» веб-API, который будет использоваться максимум 5 пользователями, является излишним. Поэтому я думаю о создании веб-службы, которая просто анализирует строки хранимых процедур, отправленные через HTTP из javascript, и возвращает таблицы в формате JSON.
Вот как это будет работать: веб-браузер + Javascript -> веб-сервис -> БД + хранимые процедуры
JavaScript-код на стороне клиента будет передаваться в строку веб-службы в следующем формате:
storproc_name; dbtype1, arg1; dbtype2, arg2; dbtype3, arg3; ... and so on
веб-сервис разбирает строку на:
storproc_name(arg1, arg2, arg3, ...)
и возвращает сообщение json:
{
{
{ column_name: value}
{ column_name: value}
{ ... }
}
{
...
}
}
пример:
fn_login; varchar(32), admin; varchar(50), password;
разобран веб-службой в:
fn_login('admin', 'password')
и возвращает это:
{
{
{ code: 1 }
{ session_token: 'theusertokenusedtoaccessotherstoredprocedures' }
}
}
и затем пользователь может выполнять другие операции с токеном сеанса
fn_list_products_by_category_id; varchar(50), theusertokenusedtoaccessotherstoredprocedures; integer, 2;
fn_list_products_by_category_id('theusertokenusedtoaccessotherstoredprocedures', 2)
{
{
{ product_id: 101 }
{ product_name: "book" }
}
{
...
}
}
Я знаю, что это нестандартная практика. Я не вижу никакой очевидной ошибки в этом подходе. Но любой вклад будет принят с благодарностью.