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

AWS AppSync с весенней загрузкой

Узнайте, как использовать AWS AppSync с spring Boot.

Автор оригинала: Kyle Doyle.

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. Запросы

Настройка нашего запроса включает в себя добавление его в запрос элемент в теле сообщения:

Map requestBody = 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 .