Indstil et responsorgan i JAX-RS

1. Oversigt

For at forenkle udviklingen af ​​REST-webtjenester og deres klienter i Java, er en standard og bærbar implementering af JAX-RS API er designet, der kaldes Jersey.

Jersey er en open source-ramme til udvikling af REST-webtjenester, der yder support til JAX-RS API'er og fungerer som en JAX-RS reference implementering.

I denne vejledning ser vi på, hvordan vi kan oprette en Jersey responsorgan med forskellige medietyper.

2. Maven-afhængigheder

For det første har vi brug for følgende afhængigheder inkluderet i pom.xml fil:

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

Den seneste version af JAX-RS kan findes på jaxrs-ri, og Jersey server kan findes på jersey-server

3. Svar i Jersey

Der er naturligvis forskellige måder at opbygge et svar ved hjælp af Jersey, og vi undersøger, hvordan vi kan bygge dem nedenfor.

Alle eksemplerne her er HTTP GET-anmodninger, og vi bruger krølle kommando til at teste ressourcerne.

3.1. OK Tekstsvar

Slutpunktet vist her er et simpelt eksempel på, hvordan almindelig tekst kan returneres som et Jersey-svar:

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

Vi kan lave en HTTP GET ved hjælp af krølle for at bekræfte svaret:

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

Dette slutpunkt sender et svar tilbage som følger:

Dette er et tekstsvar

Når medietypen ikke er angivet, Jersey er som standard tekst / almindelig.

3.2. Fejlrespons

Fejl kan også sendes tilbage som et Jersey-svar:

@GET @Path ("/ not_ok") public Response getNOkTextResponse () {String message = "Der var en intern serverfejl"; returnere Response .status (Response.Status.INTERNAL_SERVER_ERROR) .entity (meddelelse) .build (); }

For at bekræfte svaret kan vi lave en HTTP GET-anmodning ved hjælp af krølle :

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

Fejlmeddelelsen sendes tilbage i svaret:

Der opstod en intern serverfejl

3.3. Svar fra almindelig tekst

Vi kan også vende tilbage enkle svar i almindelig tekst:

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

Igen kan vi lave en HTTP GET ved hjælp af krølle for at bekræfte svaret:

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

Svaret vil være som følger:

Dette er et svar i almindelig tekst

Det samme resultat kunne også opnås via Producerer kommentar i stedet for at bruge type() metode i Respons:

@GET @Path ("/ text_plain_annotation") @Produces ({MediaType.TEXT_PLAIN}) public Response getTextResponseTypeAnnotated () {String message = "Dette er et almindeligt tekstsvar via kommentar"; returnere Response .status (Response.Status.OK) .entity (meddelelse) .build (); }

Vi kan udføre svarbekræftelse ved hjælp af krølle:

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

Her er svaret:

Dette er et almindeligt tekstsvar via kommentar

3.4. JSON-svar ved hjælp af POJO

En simpel Plain Old Java Object (POJO) kan også bruges til at opbygge et Jersey-svar.

Vi har en meget enkel Person POJO vist nedenfor, som vi bruger til at opbygge et svar:

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

Det Person POJO kan nu bruges til returnere JSON som reaktionsorgan:

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

Funktionen af ​​dette GET-slutpunkt kan verificeres - via følgende krølle kommando:

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

Personen POJO vil blive omdannet til en JSON og sendt tilbage som et svar:

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

3.5. JSON-svar ved hjælp af enkel streng

Vi kan bruge forformaterede strenge for at oprette et svar, og det kan gøres enkelt.

Følgende slutpunkt er et eksempel på, hvordan en JSON repræsenteres som en Snor kan sendes tilbage som en JSON i Jersey-svaret:

@GET @Path ("/ json") offentlig Svar getJsonResponse () {String message = "{\" hej \ ": \" Dette er et JSON-svar \ "}"; returnere Response .status (Response.Status.OK) .entity (meddelelse) .type (MediaType.APPLICATION_JSON) .build (); }

Dette kan verificeres ved at udføre en HTTP GET ved hjælp af krølle for at bekræfte svaret:

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

Når du kalder på denne ressource, returneres en JSON:

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

Det samme mønster gælder for andre almindelige medietyper som XML eller HTML. Vi skal bare underrette Jersey om, at det er en XML eller HTML, der bruger MediaType.TEXT_XML eller MediaType.TEXT_HTML og Jersey håndterer resten.

4. Konklusion

I denne hurtige artikel konstruerede vi Jersey (JAX-RS) svar til en række medietyper.

Alle kodestykker, der er nævnt i artiklen, kan findes over på GitHub.


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