Когда то, там где это было не критично, бакэенд я делал в виде примитивной прослойки для базы данных и хранения sql запросов, т.е. клиент в запросе выдавал идентификатор запроса и список его параметров именованным массивом, а сервер возвращал табличку как есть, код на php чуть ли не десяток строчек плюс список sql запросов. Если запросов за раз бывает много, ввести возможность отправки их пакетом....
мне не требовалось но я помню думал над таким, что когда нужно выполнить серию запросов, пользующихся возвращаемыми данными друг друга, можно использовать перменные, указывая вместо значений идентификаторов их имена в каком-нибудь формате, пронумеровав и поименовав их
Например два запроса - FIRST:select b_id from table_a where id=123 и второй SECOND:select name from table_b where id={FIRST:b_id} тут в качестве параметров будут переданы FIRST:[id:123] и SECOND:[id:"{FIRST:b_id}"]
Немного сложнее с запросами на модификацию, сами запросы не сложные но нужно будет как то описывать ограничения, что можно к примеру удалять или править а что нет, в общем под задачу, но точно так же как и с запросом данных на чтение, бакэнд выступает исключительно простой прослойкой к вызовам методов sql драйвера (понятно что до вызовов по методам доходить не стоит, т.е. к примеру после вставки записей insert можно тут же вызвать lastInsertId и вернуть его в ответе, а так же проверить на ошибки и собрать подробности (запихнуть в лог и выдать клиенту)