1. Введение
В этой статье мы изумим AWS AppSync с весенней загрузкой. AWS AppSync — это полностью управляемая, корпоративная Графкл сервис с синхронизацией данных в режиме реального времени и функциями автономного .
2. Настройка AWS AppSync
Во-первых, мы должны иметь активную Учетная запись AWS . После того, как об этом позаботитесь, мы можем искать AppSync с консоли AWS. Тогда мы нажимаем на Начало работы с AppSync связь.
2.1. Создание API AppSync
После быстрые инструкции по чтобы создать наш API, мы будем использовать Событие App образец проекта. Затем нажмите Начало чтобы назвать и создать приложение:
Это приведет нас к нашей консоли AppSync приложения. Теперь давайте посмотрим на нашу модель Graph’L.
2.2. Модель событий Графл
График L использует схему, чтобы определить, какие данные доступны для клиентов и как взаимодействовать с сервером Graph’L. Схема содержит запросы, мутации и различные заявленные типы.
Для простоты давайте рассмотрим часть схемы AWS AppSync Graph’L по умолчанию, нашу Событие модель:
type Event { id: ID! name: String where: String when: String description: String # Paginate through all comments belonging to an individual post. comments(limit: Int, nextToken: String): CommentConnection }
Событие является заявленным типом с некоторыми Струнные поля и КомментарийПодключение тип. Обратите внимание на восклицательный знак на Идентификационный поле. Это означает, что это требуемое/ненулевое поле.
Этого должно быть достаточно, чтобы понять основы нашей схемы. Однако, для получения дополнительной информации, над головой в Графкл место.
3. Весенняя загрузка
Теперь, когда мы создали все на стороне AWS, давайте посмотрим на наше клиентское приложение Spring Boot.
3.1. Зависимость от Maven
Чтобы получить доступ к нашему API, мы будем использовать библиотеку Spring Boot Starter WebFlux для доступа к WebClient, Весна новая альтернатива РестТемплет :
org.springframework.boot spring-boot-starter-webflux
Отъезд наша статья о WebClient для получения дополнительной информации.
3.2. Клиент ГрафзЛ
Чтобы сделать запрос на наш API, мы начнем с создания нашей ЗапросБодиСпец с помощью WebClient строитель , предоставление URL-адреса API И API AWS AppSync и ключа API:
WebClient.RequestBodySpec requestBodySpec = WebClient .builder() .baseUrl(apiUrl) .defaultHeader("x-api-key", apiKey) .build() .method(HttpMethod.POST) .uri("/graphql");
Не забудьте заголовок ключа API, x-api-ключ . Ключ API описает подлинность нашего приложения AppSync.
4. Работа с типами графа
4.1. Запросы
Настройка нашего запроса включает в себя добавление его в запрос элемент в теле сообщения:
MaprequestBody = new HashMap<>(); requestBody.put("query", "query ListEvents {" + " listEvents {" + " items {" + " id" + " name" + " where" + " when" + " description" + " }" + " }" + "}");
Используя наши запросБоди, давайте вызовем нашу WebClient для извлечения тела отклика:
WebClient.ResponseSpec response = requestBodySpec .body(BodyInserters.fromValue(requestBody)) .accept(MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML) .acceptCharset(StandardCharsets.UTF_8) .retrieve();
Наконец, мы можем получить тело в качестве Струнные :
String bodyString = response.bodyToMono(String.class).block(); assertNotNull(bodyString); assertTrue(bodyString.contains("My First Event"));
4.2. Мутации
График L позволяет обновлять и удалять данные с помощью мутаций. Мутации изменяют данные на стороне сервера по мере необходимости и следуют аналогичному синтаксису с запросами.
Добавим новое событие с помощью добавить запрос мутации:
String queryString = "mutation add {" + " createEvent(" + " name:\"My added GraphQL event\"" + " where:\"Day 2\"" + " when:\"Saturday night\"" + " description:\"Studying GraphQL\"" + " ){" + " id" + " name" + " description" + " }" + "}"; requestBody.put("query", queryString);
Одним из самых больших преимуществ AppSync и Graph’L в целом является то, что URL-адрес одной конечной точки обеспечивает всю функциональность CRUD по всей схеме.
Мы можем повторно использовать ту же WebClient добавлять, обновлять и удалять данные. Мы просто получим новый ответ на основе обратного вызова в запросе или мутации.
assertNotNull(bodyString); assertTrue(bodyString.contains("My added GraphQL event")); assertFalse(bodyString.contains("where"));
5. Заключение
В этой статье мы рассмотрели, как быстро мы можем настроить приложение Graph’L с AWS AppSync и получить к нему доступ с клиентом Spring Boot.
AppSync предоставляет разработчикам мощный API Graph’L через единую конечную точку. Для получения дополнительной информации, взгляните на наш учебник по созданию сервера весенней загрузки Graph’L .
И, как всегда, код доступен более на GitHub .