Postavite odgovorno tijelo u JAX-RS

1. Pregled

Da bi se pojednostavio razvoj REST web usluga i njihovih klijenata u Javi, standardna i prijenosna implementacija JAX-RS Dizajniran je API koji se zove Jersey.

Jersey je okvir otvorenog koda za razvoj REST web usluga koje pružaju podršku za JAX-RS API-je i služi kao JAX-RS referentna provedba.

U ovom uputstvu ćemo pogledati kako možemo postaviti a Dres odgovorno tijelo s različitim vrstama medija.

2. Ovisnosti Mavena

Prvo, trebaju nam sljedeće ovisnosti uključene u pom.xml datoteka:

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

Najnovija verzija JAX-RS mogu se naći na jaxrs-ri, i Dres poslužitelj možete pronaći na jersey-server

3. Odgovor u Jerseyu

Naravno, postoje različiti načini za izgradnju odgovora pomoću Dres, a mi ćemo pogledati kako ih možemo izgraditi u nastavku.

Svi primjeri ovdje su HTTP GET zahtjevi, a mi ćemo koristiti kovrča naredba za testiranje resursa.

3.1. Ok tekst odgovor

Ovdje prikazana krajnja točka jednostavan je primjer kako se običan tekst može vratiti kao odgovor s Jerseyja:

@GET @Path ("/ ok") javni odgovor getOkResponse () {String message = "Ovo je tekstualni odgovor"; vratiti Response .status (Response.Status.OK) .entity (poruka) .build (); }

Možemo napraviti HTTP GET pomoću kovrča da biste provjerili odgovor:

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

Ova će krajnja točka poslati odgovor na sljedeći način:

Ovo je tekstualni odgovor

Kada vrsta medija nije navedena, Jersey će prema zadanim postavkama biti tekst / običan.

3.2. Odgovor na pogrešku

Pogreške se također mogu poslati natrag kao odgovor na Jersey:

@GET @Path ("/ not_ok") javni odgovor getNOkTextResponse () {String message = "Došlo je do interne pogreške poslužitelja"; vrati Response .status (Response.Status.INTERNAL_SERVER_ERROR) .entity (poruka) .build (); }

Da bismo provjerili odgovor, možemo poslati HTTP GET zahtjev pomoću kovrča :

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

Poruka o pogrešci bit će poslana natrag u odgovoru:

Došlo je do interne pogreške poslužitelja

3.3. Odgovor običnog teksta

Možemo se i vratiti jednostavni odgovori u običnom tekstu:

@GET @Path ("/ text_plain") javni odgovor getTextResponseTypeDefined () {String message = "Ovo je običan tekstualni odgovor"; vratiti Response .status (Response.Status.OK) .entity (poruka) .type (MediaType.TEXT_PLAIN) .build (); }

Opet, možemo napraviti HTTP GET koristeći kovrča da biste provjerili odgovor:

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

Odgovor će biti sljedeći:

Ovo je običan tekstualni odgovor

Isti se ishod mogao postići i putem Proizvodi bilješka umjesto upotrebe tip() metoda u Odgovor:

@GET @Path ("/ text_plain_annotation") @Produces ({MediaType.TEXT_PLAIN}) javni odgovor getTextResponseTypeAnnotated () {String message = "Ovo je običan tekstni odgovor putem bilješke"; vratiti Response .status (Response.Status.OK) .entity (poruka) .build (); }

Možemo provjeriti odgovor pomoću kovrča:

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

Evo odgovora:

Ovo je običan tekstni odgovor putem bilješke

3.4. JSON odgovor pomoću POJO-a

Jednostavan Obični stari Java objekt (POJO) također se može koristiti za izgradnju odgovora iz Jerseyja.

Imamo vrlo jednostavno Osoba POJO prikazan u nastavku, a koji ćemo koristiti za izradu odgovora:

javni razred Osoba {Ime niza; Adresa niza; // standardni konstruktor // standardni getteri i postavljači}

The Osoba POJO se sada može koristiti za vratite JSON kao tijelo odgovora:

@GET @Path ("/ pojo") javni odgovor getPojoResponse () {Osoba osoba = nova osoba ("Abhinayak", "Nepal"); povratak Response .status (Response.Status.OK) .entity (person) .build (); }

Rad ove GET krajnje točke može se provjeriti na sljedeći način kovrča naredba:

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

POJO Osoba pretvorit će se u JSON i poslati natrag kao odgovor:

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

3.5. JSON odgovor pomoću jednostavnog niza

Možemo koristiti predformatirani nizovi za stvaranje odgovora, a to se može učiniti jednostavno.

Sljedeća krajnja točka primjer je kako je JSON predstavljen kao Niz može se poslati natrag kao JSON u odgovoru iz Jerseyja:

@GET @Path ("/ json") javni odgovor getJsonResponse () {String message = "{\" hello \ ": \" Ovo je JSON odgovor \ "}"; vratiti Response .status (Response.Status.OK) .entity (poruka) .type (MediaType.APPLICATION_JSON) .build (); }

To se može provjeriti pomoću HTTP GET koristeći kovrča da biste provjerili odgovor:

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

Pozivanjem ovog resursa vratit će se JSON:

{"hello": "Ovo je JSON odgovor"}

Isti obrazac odnosi se i na druge uobičajene vrste medija poput XML-a ili HTML-a. Samo trebamo obavijestiti Jersey da se koristi XML ili HTML MediaType.TEXT_XML ili MediaType.TEXT_HTML a Jersey će se pobrinuti za ostalo.

4. Zaključak

U ovom smo kratkom članku konstruirali odgovore na Jersey (JAX-RS) za razne vrste medija.

Svi isječci koda, spomenuti u članku, mogu se naći u preko na GitHubu.