Комментарии 19
Просто это фактически rpc, но обернуто в rest. Достаточно распространенная практика, не вижу в ней ничего предосудительного. Чистый rest вообще достаточно сложно на глобус натягивается.
кто будет объект строкой делать?
Корни проблемы тут: в БД хранится json-объект в виде строки (что, конечно, тоже довольно спорное решение, сделанное скорее наспех), далее объект считывается и в сыром виде передаётся в ответе… Скорее это вопрос лени разработчика.
Учитывая, что многие современные СУБД хорошо работают и с таким данными( json или xml ), вполне нормальная практика.
Но если таких данных в системе становится много, нужно просто переходить на NOSQL или поднимать рядом еще NOSQL хранилище.
Таким образом достаточно удобно делать данные произвольно структуры. Или дополнительные данные в линковочных таблицах.
Обычно это не приводит к проблемам, если по этим данным не выполняется фильтрация или поиск.
Но ещё json в SQL-таблицах порой возникает даже когда структура данных полностью известна, но присутствует лень создавать подчинённую таблицу… В любом случае, адекватная сериализация обязана присутствовать, объект, обёрнутый в строку — это жуть)
Тут критерий скорее не "становится много", а "SQL хранилище перестаёт справляться".
Сам так однажды сделал и даже не догадывался об этом. Так как значения брал из mysql и не мог представить даже что числовые поля mysql драйвер PHP превращает в строковые.
Может быть дело было в том, что тогда BigInteger в JavaScript/JSON не подвезли? Если его передать без экранирования в строку, то значимые биты теряются, но при этом никакой ошибки не выдается. Просто получаем битые данные.
Натыкался на такое поведение и тоже приходилось экранировать в строку на удивление потребителям данного API.
Каюсь, с некоторых пор оборачиваю int в строку, т.к. libjson (а за ним Chrome, Firefox и почти все electron приложения) умеет считать только до 2^53.
Вот к чему 123 тут задавать числом, зачем подобная путаница? Пусть будет строкой, десериализатор разберётся
Microsoft не в курсе, что это вредно: Приложения ASP.NET Core поддерживают десериализацию заключенных в кавычки чисел
Используете имена параметров с заглавной буквы в yaml файле описания.
И пусть те кто используют java реализации json мучаются.
{
«data»: "[56, 61, 73, 79, 61, 20, 20, 20, 20, 20, 31, 32, 33, 20, 20, 34, 35, 36, 20, 20, 50, 69, 74, 65, 72, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]"
}
Помню таким образом ещё студентами первого курса выводили данные в файл на самых первых лабах… вот было время… а сейчас напридумывали ваших джсонов и сериализаторов и жить сразу легче стало ^_^
Вредные советы для «идеального» REST API