GraphQL Netflix для весенней загрузки


Netflix имеет открытый исходный код своей платформы DGS Framework (Domain Graph Service) GraphQL server framework для весенней загрузки. Начиная с внутреннего инструмента корпорации, он был щедро открыт для остальных из нас.

Netflix-одна из тех организаций, которые вышли за рамки REST, вместо этого приняв GraphQL. Вместо того, чтобы предоставлять множество микросервисов разработчикам пользовательского интерфейса, Netflix выбрал единый уровень агрегации API на краю, работающий на GraphQL. Поскольку они также используют Spring Boot для своей инфраструктуры, слияние должно было произойти.

Таким образом, фреймворк DGS построен поверх graphql-java и, по сути, предлагает уровень абстракции над низкоуровневыми деталями библиотеки. Хотя фреймворк написан исключительно на языке Kotlin (требуется Kotlin 1.4), он в основном ориентирован на Java, поскольку Java наиболее тесно связана с Spring Boot.Тем не менее, вы также можете свободно писать свой код в Kotlin.

Интеграция библиотеки проста, так как она также использует модель на основе аннотаций Spring Boot. Например, при реализации средства выборки данных (конструкций, возвращающих данные для запроса) вы используете следующий фрагмент на основе аннотаций :

@DgsComponentpublic класс ShowsDatafetcher {

private final List shows = List.of( новое шоу(“Странные вещи”, 2016), новое шоу (“Озарк”, 2017), новое шоу(“Корона”, 2016), новое шоу(“Мертвый для меня”, 2019), новое шоу(“Оранжевый – новый черный”, 2013));

@DgsData(parentType = “Query”, field = “shows”)публичный список shows(@InputArgument(“titleFilter”) Строка titleFilter) { if(titleFilter == null) { return показывает; }

 возврат показывает.stream().filter(s -> s.getTitle().contains(titleFilter)).collect(Коллекторы.тоЛист()); }}

Кроме того, он поставляется с множеством других функций: 

Модель программирования пружинной загрузки на основе аннотаций

Тестовая среда для написания тестов запросов в виде модульных тестов

Плагин генерации кода Gradle для создания типов из схемы

Простая интеграция с федерацией GraphQL

Интеграция с Spring Security

Подписки на GraphQL (WebSockets и SSE)

Загрузка файлов

Обработка ошибок

Множество точек расширения 

Это довольно легко настроить. Просто добавьте ссылку на библиотеку com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter и позвольте ей использовать ваш файл схемы GraphQL, поскольку DGS предназначен для разработки схемы в первую очередь.

Для создания каждого типа GraphQL для каждого типа, описанного в схеме, а также для создания сборщиков данных в проект должен быть включен плагин DSG codegen :

плагины { id(“com.netflix.dgs.codegen”) версия “4.0.12”}

Это работает в соответствии с правилами отображения, поэтому, например, основные скалярные типы сопоставляются с соответствующими типами Java/Kotlin (String, Integer и т.д.), В то время как типы даты и времени сопоставляются с соответствующими классами java. time.

Генератор кода также может создавать клиентские классы API, которые можно использовать для запроса данных из конечных точек GraphQL с помощью Java.

Это еще одно свидетельство универсальности Spring Boot для разработки бэкенда; существует так много вариантов интеграции, что я узнал из первых рук, окончив наноуровень веб-разработчика Java. (См.Мое руководство для инсайдеров здесь). Теперь он также может легко выполнять GraphQL.


Добавить комментарий