Как стать автором
Обновить

Как сгенерировать безопасный, типизированный Node.js API с использованием Prisma, TypeGraphQL и graphql-query-purifier

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров4K
Всего голосов 10: ↑2 и ↓8-4
Комментарии13

Комментарии 13

не к содержанию статьи, а к ее теме.
какой ужас! вообще сомнительная полезность всяких библиотек доступа к данным по типу graphql и jsonrpc. буквально убийство приложения. связывает по рукам и ногам. даже для mvp сомнительная цена.

У всего свои плюсы и минусы. У этого подхода плюс в том, что API полностью сгенерировано.

Это позволяет как получать/фильтровать/сортировать ответы с любой глубиной вложенности, так и производить манипуляции с данными на любой глубине.

Скажем, хотите добавить департамент, в него сотрудника, а ему сразу добавить выгрузку зарплат за один запрос? Не проблема, авторезолверы полностью поддерживают API Призмы.

Плюс, не придется писать инструкцию, достаточно дать ссылку на сайт с доками по призме, чтобы фронты разобрались как этим пользоваться.

А написали мы всего два файла. Сложно сходу это представить, я тоже не сразу понял прикола

Согласен с первым комментарием.

А без этих надстроек это разве невозможно сделать ?


Можно конечно. Но придется это писать и делать. ?? Лично я бы потратил время на что-нибудь другое кроме очередного CRUD.

Или вы имеете ввиду, что существует способ сгенерировать типизированные REST эндпоинты с валидацией, поддержкой вложенности данных и автогенерацией Open API спек?

придется это писать и делать. 

А статью не лень писать ? Такое чувство вы не соираетесь поддерживать и развивать код.

Не собираюсь, всё верно. А зачем? Что именно там надо развить, когда у вас в распоряжении полный доступ к любым операциям с базой из коробки?

Всё что вам остаётся сделать - это убедиться, что клиент не выполнит операцию, которую не должен. Но это тема следующей статьи.

Мне статья понравилась, спасибо. Думаю если цель стоит в том чтобы получить авто генерацию GraphQL API исходя из сущностей есть гораздо более удобный способ это сделать - keystone js.

Спасибо! Да, в целом, почти одно и тоже - directus, keystone, strapi и еще штук сто похожих.

Из того с чем сталкивался лично - Strapi, но она не умеет в edge и в строгую типизацию. Ну и медленно очень запросы обрабатывает. Иногда до минуты может доходить время ответа сервера.

А Keystone?

Погуглил, keystone хорош

Я пока только для своих пет проектиков поюзал немного keystone. Годная тема, но есть свои ньюансы, порой довольно неприятные. Тем не менее позволяет очень быстро поднять GraphQL API и легко его конфигурировать. Поддержка TS тоже огонь. Не знаю насколько покатит для высоконагруженных систем... Но юзать приятно)

Благодарю за статью, сам что-то похожее сейчас ищу.

Видел вариант keystone + t3, пробовали ли сравнивать?
Как на счёт t3 варианта решений?

Пока не доводилось, всё ещё работаю с этим подходом.

P.S. статья об этом упоминает, но там есть проблема с валидацией ввода в мутациях. Если вкратце, мутации по-умолчанию позволяют клиенту слишком много операций.

Вам потребуется prisma-zod-generator, чтобы добавить декоратор, который будет фильтровать ввод

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории