Sett et responsorgan i JAX-RS

1. Oversikt

For å forenkle utviklingen av REST-nettjenester og deres klienter i Java, er en standard og bærbar implementering av JAX-RS API er designet som kalles Jersey.

Jersey er et open source-rammeverk for utvikling av REST-nettjenester som gir støtte til JAX-RS APIer og fungerer som en JAX-RS referanseimplementering.

I denne opplæringen vil vi se på hvordan vi kan sette opp en Jersey responsorgan med forskjellige medietyper.

2. Maven-avhengigheter

Først trenger vi følgende avhengigheter inkludert i pom.xml fil:

 org.glassfish.jersey.bundles jaxrs-ri 2.26 org.glassfish.jersey.core jersey-server 2.26 

Den siste versjonen av JAX-RS finner du på jaxrs-ri, og Jersey serveren finner du på jersey-server

3. Svar i Jersey

Naturligvis er det forskjellige måter å bygge et svar på Jersey, og vi vil se på hvordan vi kan bygge dem nedenfor.

Alle eksemplene her er HTTP GET-forespørsler, og vi bruker krølle kommando for å teste ressursene.

3.1. OK Tekstsvar

Endepunktet vist her er et enkelt eksempel på hvordan ren tekst kan returneres som et Jersey-svar:

@GET @Path ("/ ok") public Response getOkResponse () {String message = "Dette er et tekstsvar"; return Response .status (Response.Status.OK) .entity (melding) .build (); }

Vi kan gjøre en HTTP GET ved hjelp av krølle for å bekrefte svaret:

krølle -XGET // localhost: 8080 / jersey / respons / ok

Dette endepunktet vil sende et svar tilbake som følger:

Dette er et tekstsvar

Når medietypen ikke er spesifisert, Jersey vil som standard være tekst / vanlig.

3.2. Feilsvar

Feil kan også sendes tilbake som et Jersey-svar:

@GET @Path ("/ not_ok") public Response getNOkTextResponse () {String message = "Det oppstod en intern serverfeil"; return Response .status (Response.Status.INTERNAL_SERVER_ERROR) .entity (melding) .build (); }

For å bekrefte svaret kan vi gjøre en HTTP GET-forespørsel ved hjelp av krølle :

krøll -XGET // localhost: 8080 / jersey / respons / not_ok

Feilmeldingen vil bli sendt tilbake i svaret:

Det oppstod en intern serverfeil

3.3. Vanlig tekstrespons

Vi kan også komme tilbake enkle svar i ren tekst:

@GET @Path ("/ text_plain") public Response getTextResponseTypeDefined () {String message = "Dette er et vanlig tekstsvar"; return Response .status (Response.Status.OK) .entity (message) .type (MediaType.TEXT_PLAIN) .build (); }

Igjen kan vi gjøre en HTTP GET ved hjelp krølle for å bekrefte svaret:

krøll -XGET // localhost: 8080 / jersey / respons / text_plain

Svaret vil være som følger:

Dette er et vanlig tekstsvar

Samme utfall kan også oppnås via Produserer kommentar i stedet for å bruke type() metoden i Respons:

@GET @Path ("/ text_plain_annotation") @Produces ({MediaType.TEXT_PLAIN}) public Response getTextResponseTypeAnnotated () {Strengmelding = "Dette er et vanlig tekstsvar via kommentar"; return Response .status (Response.Status.OK) .entity (melding) .build (); }

Vi kan utføre responsbekreftelse ved hjelp av krølle:

krøll -XGET // localhost: 8080 / jersey / respons / text_plain_annotation

Her er svaret:

Dette er et vanlig tekstsvar via kommentar

3.4. JSON-svar ved hjelp av POJO

En enkel Plain Old Java Object (POJO) kan også brukes til å bygge et Jersey-svar.

Vi har en veldig enkel Person POJO vist nedenfor, som vi bruker til å lage et svar:

offentlig klasse Person {Strengnavn; Strengadresse; // standard konstruktør // standard getters og setter}

De Person POJO kan nå brukes til returner JSON som responsorgan:

@GET @Path ("/ pojo") offentlig respons getPojoResponse () {Person person = ny person ("Abhinayak", "Nepal"); return Response .status (Response.Status.OK) .entity (person) .build (); }

Virkningen av dette GET-endepunktet kan verifiseres - via følgende krølle kommando:

krøll -XGET // localhost: 8080 / jersey / respons / pojo

Personen POJO vil bli forvandlet til en JSON og sendt tilbake som et svar:

{"address": "Nepal", "name": "Abhinayak"}

3.5. JSON-svar ved hjelp av enkel streng

Vi kan bruke forhåndsformaterte strenger for å skape et svar, og det kan gjøres enkelt.

Følgende sluttpunkt er et eksempel på hvordan en JSON representerte som en String kan sendes tilbake som JSON i Jersey-svaret:

@GET @Path ("/ json") public Response getJsonResponse () {String message = "{\" hallo \ ": \" Dette er et JSON-svar \ "}"; return Response .status (Response.Status.OK) .entity (melding) .type (MediaType.APPLICATION_JSON) .build (); }

Dette kan verifiseres ved å gjøre en HTTP GET ved hjelp av krølle for å bekrefte svaret:

krøll -XGET // localhost: 8080 / jersey / respons / json

Når du kaller denne ressursen, returneres en JSON:

{"hallo": "Dette er et JSON-svar"}

Det samme mønsteret gjelder for andre vanlige medietyper som XML eller HTML. Vi trenger bare å varsle Jersey om at det er en XML eller HTML som bruker MediaType.TEXT_XML eller MediaType.TEXT_HTML og Jersey vil håndtere resten.

4. Konklusjon

I denne raske artikkelen konstruerte vi Jersey (JAX-RS) svar for en rekke medietyper.

Alle kodebitene, nevnt i artikkelen, finner du over på GitHub.


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