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. I denne raske artikkelen konstruerte vi Jersey (JAX-RS) svar for en rekke medietyper. Alle kodebitene, nevnt i artikkelen, finner du over på GitHub.
4. Konklusjon