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. 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.
4. Zaključak