AWS AppSync With Spring Boot

1. Introduksjon

I denne artikkelen vil vi utforske AWS AppSync med Spring Boot. AWS AppSync er en fullstendig administrert grafQL-tjeneste på bedriftsnivå med sanntids datasynkronisering og offline programmeringsfunksjoner.

2. Konfigurer AWS AppSync

Først må vi ha en aktiv AWS-konto. Når det er tatt vare på, kan vi søke etter AppSync fra AWS-konsollen. Så klikker vi på Komme i gang med AppSync lenke.

2.1. Opprett AppSync API

Etter hurtigstartinstruksjonene for å opprette API-en vår, bruker vi Event-app prøveprosjekt. Klikk deretter Start å navngi og opprette appen:

Dette fører oss til AppSync-appkonsollen. La oss nå ta en titt på vår GraphQL-modell.

2.2. GraphQL hendelsesmodell

GraphQL bruker et skjema for å definere hvilke data som er tilgjengelige for klienter og hvordan de skal samhandle med GraphQL-serveren. Skjemaet inneholder spørsmål, mutasjoner og en rekke deklarerte typer.

For enkelhets skyld, la oss ta en titt på en del av standard AWS AppSync GraphQL-skjema, vårt Begivenhet modell:

skriv inn hendelse {id: ID! navn: String hvor: String når: Stringbeskrivelse: String # Paginere gjennom alle kommentarer som tilhører et enkelt innlegg. kommentarer (limit: Int, nextToken: String): CommentConnection}

Begivenhet er en erklært type med noen String felt og en KommentarKobling type. Legg merke til utropstegnet på ID felt. Dette betyr at det er et obligatorisk / ikke-null felt.

Dette bør være nok til å forstå det grunnleggende i skjemaet vårt. For mer informasjon, gå til GraphQL-nettstedet.

3. Vårstøvel

Nå som vi har satt opp alt på AWS-siden, la oss se på vår Spring Boot-klientapplikasjon.

3.1. Maven avhengigheter

For å få tilgang til API-en vår, bruker vi Spring Boot Starter WebFlux-biblioteket for tilgang til Webklient, Vårens nye alternativ til RestTemplate:

  org.springframework.boot spring-boot-starter-webflux 

Sjekk ut artikkelen vår på WebClient for mer informasjon.

3.2. GraphQL-klient

For å gjøre en forespørsel til API-en vår, begynner vi med å lage vår RequestBodySpec bruker WebClient bygger, gir AWS AppSync API URL og API-nøkkel:

WebClient.RequestBodySpec requestBodySpec = WebClient .builder () .baseUrl (apiUrl) .defaultHeader ("x-api-key", apiKey) .build () .metode (HttpMethod.POST) .uri ("/ graphql");

Ikke glem overskriften på API-nøkkelen, x-api-nøkkel. API-nøkkelen autentiseres til AppSync-appen vår.

4. Arbeide med GraphQL-typer

4.1. Spørringer

Å sette opp spørsmålet vårt innebærer å legge det til en spørsmål element i meldingsdelen:

Map requestBody = ny HashMap (); requestBody.put ("query", "query ListEvents {" + "listEvents {" + "items {" + "id" + "name" + "where" + "when" + "description" + "}" + "} "+"} ");

Bruke vår forespørsel la oss påkalle vår WebClient for å hente responsorganet:

WebClient.ResponseSpec respons = requestBodySpec .body (BodyInserters.fromValue (requestBody)) .accept (MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML) .acceptCharset (StandardCharsets.UTF_8) .hent (); 

Endelig kan vi få kroppen som en String:

String bodyString = respons.bodyToMono (String.class) .block (); assertNotNull (bodyString); assertTrue (bodyString.contains ("Min første hendelse"));

4.2. Mutasjoner

GraphQL tillater oppdatering og sletting av data ved bruk av mutasjoner. Mutasjoner endrer dataene på serversiden etter behov og følger en lignende syntaks som spørsmål.

La oss legge til en ny begivenhet med en legge til mutasjonsforespørsel:

String queryString = "mutasjon legg til {" + "createEvent (" + "navn: \" Min lagt til GraphQL-hendelse \ "" + "hvor: \" Dag 2 \ "" + "når: \" lørdag kveld \ "" + " beskrivelse: \ "Studier GraphQL \" "+") {"+" id "+" navn "+" beskrivelse "+"} "+"} "; requestBody.put ("spørring", queryString);

En av de største fordelene med AppSync, og med GraphQL generelt, er at en endepunkt-URL gir all CRUD-funksjonalitet over hele skjemaet.

Vi kan gjenbruke det samme WebClient for å legge til, oppdatere og slette data. Vi vil ganske enkelt få et nytt svar basert på tilbakeringing i spørringen eller mutasjonen.

assertNotNull (bodyString); assertTrue (bodyString.contains ("My added GraphQL event")); assertFalse (bodyString.contains ("hvor"));

5. Konklusjon

I denne artikkelen så vi på hvor raskt vi kan sette opp en GraphQL-app med AWS AppSync og få tilgang til den med en Spring Boot-klient.

AppSync gir utviklere en kraftig GraphQL API gjennom et enkelt endepunkt. For mer informasjon, ta en titt på veiledningen vår om å lage en GraphQL Spring Boot-server.

Og som alltid er koden tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found