Рубрики
Без рубрики

Domain Graph Service (DGS) – платформа GraphQL с открытым исходным кодом для Spring Boot от Netflix

Сообщество GraphQL полно замечательных историй о том, как внедрение GraphQL изменило продукт, сделанный i… С тегами graphql, java, webdev, kotlin.

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