Сообщество GraphQL полно замечательных историй о том, как внедрение GraphQL изменило продукт, сделало его лучше и мощнее. Иногда внедрение GraphQL порождает потребность в инновациях. Так же, как и сам GraphQL, который был создан внутри Facebook и позже опубликован публично, многие компании решают открыть свои реализации GraphQL с открытым исходным кодом и сделать их доступными для общественности, видя, как много это может дать сообществу разработчиков. Это одна из таких историй.
Как это началось
В 2019 году Netflix приняла решение внедрить объединенную архитектуру GraphQL, направленную на:
- предоставление унифицированного API для потребителей,
- предоставление гибкости их серверным разработчикам,
- сохранение изоляции службы.
Для компании, которая стандартизировала Spring Boot для серверной разработки, переход на новую архитектуру означал проблему внедрения GraphQL для многих различных серверных команд в экосистеме Java Netflix . Чтобы назвать эту операцию успешной, было очевидно, что команды, которые были вынуждены внедрять GraphQL, должны были получить отличный опыт разработки GraphQL в Spring Boot. Это причина, по которой служба Domain Graph была воплощена в жизнь.
Служба графа домена
Domain Graph Service (DGS) – это платформа, созданная внутри Netlfix, которая упрощает реализацию автономных и объединенных служб GraphQL для Spring Boot. Фреймворк построен поверх graphql-java . Несмотря на то, что большая часть кода DGS написана на Kotlin, он в первую очередь предназначен для использования с Java, а его ключевые функции включают в себя такие вещи, как:
- Модель программирования Spring Boot на основе аннотаций,
- Интеграция с Spring Security,
- Плагин генерации кода Gradle для создания типов Java/Kotlin из схемы GraphQL,
- Клиент GraphQL для Java,
- Обработка ошибок,
- Простая интеграция с федерацией GraphQL,
- Подписки на GraphQL (WebSockets и SSE),
- Автоматическая поддержка типов интерфейса/объединения.
Понимая, насколько это было важно для их разработчиков, Netflix решила открыть исходный код фреймворка и создать вокруг него сообщество в 2020 году (Netflix использует те же компоненты OSS!).
Источник: netflixtechblog.com
Приступая к работе
Использовать DGS очень просто. Основа фреймворка построена вокруг модели программирования на основе аннотаций, хорошо известной разработчикам Spring Boot. Давайте взглянем на пример, предоставленный командой, работающей над этим проектом:
Прежде всего, вам нужно определить схему GraphQL , простая схема, подобная этой, будет работать для примера:
type Query { shows(titleFilter: String): [Show] } type Show { title: String releaseYear: Int }
Как только ваша схема определена, следующим шагом будет реализация fletcher и … Это оно. Этого достаточно, чтобы запустить вашу конечную точку GraphQL!
@DgsComponent public class ShowsDatafetcher { private final Listshows = List.of( new Show("Stranger Things", 2016), new Show("Ozark", 2017) ); @DgsData(parentType = "Query", field = "shows") public List shows(@InputArgument("titleFilter") String titleFilter) { if(titleFilter == null) { return shows; } return shows.stream() .filter(s -> s.getTitle().contains(titleFilter)) .collect(Collectors.toList()); } }
Источник: netflixtechblog.com
Попробуйте это сделать
Если вы хотите попробовать DGS framework, обязательно ознакомьтесь с его официальной документацией и руководствами или перейдите прямо в репозиторий DGS на GitHub .
Ускорьте разработку вашего GraphQL API
GraphQL Editor – это вспомогательный инструмент как для продвинутых пользователей GraphQL, так и для тех, кто делает первые шаги с API GraphQL. Наша универсальная среда разработки для GraphQL поможет вам создавать, управлять и развертывать свой GraphQL API намного быстрее. Попробуйте GraphQL Editor бесплатно!
Оригинал: “https://dev.to/graphqleditor/domain-graph-service-dgs-open-source-graphql-framework-for-spring-boot-by-netflix-37h3”