Сообщество 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 List shows =
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”