Введение в GraphQL в Nest
Экрану нужны и список, и детали сразу, а обычный JSON ответ отдаёт лишние поля или требует несколько обращений к серверу. Клиент тянет целый объект, хотя на экране видна только часть данных.
GraphQL принимает текст
запроса с перечнем нужных полей
и возвращает ровно их в одном
ответе. В Nest для подхода
code-first ставят пакеты
@nestjs/graphql,
@nestjs/apollo,
@apollo/server и
graphql: типы и операции
описывают классами TypeScript,
а схема собирается автоматически
при старте процесса NodeJS.
Класс с пометкой резолвера
отвечает за чтение и изменение
данных в памяти так же, как
контроллер на HTTP, только
клиент приходит через единую
точку GraphQL. Резолвер
регистрируют среди провайдеров
модуля рядом с подключением
GraphQLModule.forRoot
и драйвером ApolloDriver
с флагом autoSchemaFile.
Дальше разберём установку модулей, первый запрос списка строк, выбор одной записи по идентификатору, мутацию для новой строки, описание типа объекта, отдельную подгрузку связанного поля и простую проверку доступа на уровне резолвера без Passport и без JWT.