Stel een Response Body in JAX-RS in

1. Overzicht

Om de ontwikkeling van REST-webservices en hun klanten in Java te vereenvoudigen, is een standaard en draagbare implementatie van JAX-RS API is ontworpen en heet Jersey.

Jersey is een open source framework voor het ontwikkelen van REST-webservices die ondersteuning bieden voor JAX-RS API's en dient als een JAX-RS referentie-implementatie.

In deze tutorial bekijken we hoe we een Jersey responsbody met verschillende mediatypen.

2. Maven afhankelijkheden

Ten eerste hebben we de volgende afhankelijkheden nodig die zijn opgenomen in het pom.xml het dossier:

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

De nieuwste versie van JAX-RS is te vinden op jaxrs-ri, en Jersey server is te vinden op jersey-server

3. Reactie in Jersey

Er zijn natuurlijk verschillende manieren om een ​​respons op te bouwen met Jersey, en we zullen kijken hoe we ze hieronder kunnen bouwen.

Alle voorbeelden hier zijn HTTP GET-verzoeken en we zullen de krullen commando om de bronnen te testen.

3.1. Ok tekstantwoord

Het hier getoonde eindpunt is een eenvoudig voorbeeld van hoe platte tekst kan worden geretourneerd als een Jersey-antwoord:

@GET @Path ("/ ok") public Response getOkResponse () {String message = "Dit is een tekstantwoord"; return Response .status (Response.Status.OK) .entity (bericht) .build (); }

We kunnen een HTTP GET doen met krullen om het antwoord te verifiëren:

krul -XGET // localhost: 8080 / jersey / response / ok

Dit eindpunt stuurt als volgt een antwoord terug:

Dit is een tekstreactie

Als het mediatype niet is opgegeven, Jersey zal standaard tekst / gewoon zijn.

3.2. Fout antwoord

Fouten kunnen ook worden teruggestuurd als reactie van Jersey:

@GET @Path ("/ not_ok") openbare reactie getNOkTextResponse () {String message = "Er was een interne serverfout"; return Response .status (Response.Status.INTERNAL_SERVER_ERROR) .entity (bericht) .build (); }

Om het antwoord te verifiëren, kunnen we een HTTP GET-verzoek doen met krullen :

curl -XGET // localhost: 8080 / jersey / response / not_ok

De foutmelding wordt teruggestuurd in de reactie:

Er is een interne serverfout opgetreden

3.3. Antwoord in platte tekst

We kunnen ook terugkeren eenvoudige reacties in platte tekst:

@GET @Path ("/ text_plain") openbaar antwoord getTextResponseTypeDefined () {String message = "Dit is een antwoord in platte tekst"; return Response .status (Response.Status.OK) .entity (bericht) .type (MediaType.TEXT_PLAIN) .build (); }

Nogmaals, we kunnen een HTTP GET doen met krullen om het antwoord te verifiëren:

curl -XGET // localhost: 8080 / jersey / response / text_plain

Het antwoord is als volgt:

Dit is een antwoord in platte tekst

Hetzelfde resultaat kan ook worden bereikt via de Produceert annotatie in plaats van de type() methode in de Reactie:

@GET @Path ("/ text_plain_annotation") @Produces ({MediaType.TEXT_PLAIN}) openbare reactie getTextResponseTypeAnnotated () {String message = "Dit is een reactie in platte tekst via annotatie"; return Response .status (Response.Status.OK) .entity (bericht) .build (); }

We kunnen responsverificatie uitvoeren met krullen:

curl -XGET // localhost: 8080 / jersey / response / text_plain_annotation

Hier is het antwoord:

Dit is een antwoord in platte tekst via annotatie

3.4. JSON-reactie met behulp van POJO

Een eenvoudige Plain Old Java Object (POJO) kan ook worden gebruikt om een ​​Jersey-antwoord te bouwen.

We hebben een heel simpel Persoon POJO hieronder weergegeven, die we zullen gebruiken om een ​​antwoord op te bouwen:

openbare klasse Persoon {Stringnaam; String adres; // standaard constructor // standaard getters en setters}

De Persoon POJO kan nu worden gebruikt retourneer JSON als de hoofdtekst van het antwoord:

@GET @Path ("/ pojo") openbare reactie getPojoResponse () {Persoon person = nieuwe persoon ("Abhinayak", "Nepal"); return Response .status (Response.Status.OK) .entity (persoon) .build (); }

De werking van dit GET-eindpunt kan worden geverifieerd - via het volgende krullen opdracht:

curl -XGET // localhost: 8080 / jersey / response / pojo

De POJO van de persoon wordt omgezet in een JSON en als reactie teruggestuurd:

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

3.5. JSON-antwoord met behulp van eenvoudige tekenreeks

We kunnen gebruiken voorgeformatteerde strings om een ​​antwoord te creëren, en het kan eenvoudig worden gedaan.

Het volgende eindpunt is een voorbeeld van hoe een JSON wordt weergegeven als een Draad kan worden teruggestuurd als een JSON in het antwoord van Jersey:

@GET @Path ("/ json") openbare reactie getJsonResponse () {String message = "{\" hallo \ ": \" Dit is een JSON-reactie \ "}"; return Response .status (Response.Status.OK) .entity (bericht) .type (MediaType.APPLICATION_JSON) .build (); }

Dit kan worden geverifieerd door een HTTP GET uit te voeren met krullen om het antwoord te verifiëren:

curl -XGET // localhost: 8080 / jersey / response / json

Als u deze bron aanroept, wordt een JSON geretourneerd:

{"hallo": "Dit is een JSON-reactie"}

Hetzelfde patroon is van toepassing op andere veelgebruikte mediatypen zoals XML of HTML. We hoeven Jersey alleen te laten weten dat het een XML- of HTML-gebruik is MediaType.TEXT_XML of MediaType.TEXT_HTML en Jersey doet de rest.

4. Conclusie

In dit korte artikel hebben we Jersey (JAX-RS) -antwoorden geconstrueerd voor verschillende mediatypen.

Alle codefragmenten die in het artikel worden genoemd, zijn te vinden op GitHub.