Nastavte telo odpovede v JAX-RS

1. Prehľad

Na zjednodušenie vývoja webových služieb REST a ich klientov v prostredí Java je štandardná a prenosná implementácia JAX-RS Bolo navrhnuté API, ktoré sa volá Jersey.

Jersey je rámec otvoreného zdroja pre vývoj webových služieb REST, ktoré poskytujú podporu pre JAX-RS API a slúži ako JAX-RS referenčná implementácia.

V tomto výučbe sa pozrieme na to, ako môžeme nastaviť a Jersey telo odpovede s rôznymi typmi médií.

2. Maven závislosti

Najskôr potrebujeme nasledujúce závislosti zahrnuté v pom.xml spis:

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

Najnovšia verzia servera JAX-RS možno nájsť na jaxrs-ri a Jersey server nájdete na serveri jersey-server

3. Odozva v Jersey

Prirodzene, existujú rôzne spôsoby, ako vytvoriť odpoveď pomocou Jersey, a nižšie sa pozrieme na to, ako ich môžeme zostaviť.

Všetky tu uvedené príklady sú požiadavky HTTP GET a budeme používať zvlnenie príkaz na otestovanie zdrojov.

3.1. Dobre, odpoveď na text

Tu zobrazený koncový bod je jednoduchým príkladom toho, ako je možné vrátiť obyčajný text ako odpoveď Jersey:

@GET @Path ("/ ok") verejná odpoveď getOkResponse () {String message = "Toto je textová odpoveď"; návrat Response .status (Response.Status.OK) .entity (message) .build (); }

Môžeme urobiť HTTP GET pomocou zvlnenie na overenie odpovede:

curl -XGET // localhost: 8080 / dres / odpoveď / ok

Tento koncový bod pošle späť odpoveď takto:

Toto je textová odpoveď

Ak nie je zadaný typ média, Jersey bude predvolene nastavený na text / plain.

3.2. Reakcia na chybu

Chyby je možné odoslať aj späť ako odpoveď Jersey:

@GET @Path ("/ not_ok") verejná odpoveď getNOkTextResponse () {String message = "Došlo k internej chybe servera"; návrat Response .status (Response.Status.INTERNAL_SERVER_ERROR) .entity (message) .build (); }

Na overenie odpovede môžeme urobiť požiadavku HTTP GET pomocou zvlnenie :

curl -XGET // localhost: 8080 / dres / odpoveď / nie_ok

Chybová správa sa odošle späť v odpovedi:

Vyskytla sa interná chyba servera

3.3. Obyčajný text

Môžeme sa aj vrátiť jednoduché odpovede v obyčajnom texte:

@GET @Path ("/ text_plain") verejná odpoveď getTextResponseTypeDefined () {String message = "Toto je odpoveď v obyčajnom texte"; návrat Response .status (Response.Status.OK) .entity (message) .type (MediaType.TEXT_PLAIN) .build (); }

Opäť môžeme urobiť HTTP GET pomocou zvlnenie na overenie odpovede:

curl -XGET // localhost: 8080 / dres / odpoveď / text_plain

Odpoveď bude nasledovná:

Toto je odpoveď v obyčajnom texte

Rovnaký výsledok by sa mohol dosiahnuť aj prostredníctvom Vyrába anotácia namiesto použitia typ () metóda v Odozva:

@GET @Path ("/ text_plain_annotation") @Produces ({MediaType.TEXT_PLAIN}) public Response getTextResponseTypeAnnotated () {String message = "Toto je obyčajná textová odpoveď prostredníctvom anotácie"; návrat Response .status (Response.Status.OK) .entity (message) .build (); }

Overenie odpovede môžeme vykonať pomocou zvlnenie:

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

Tu je odpoveď:

Toto je odpoveď v obyčajnom texte prostredníctvom anotácie

3.4. Odpoveď JSON pomocou POJO

Jednoduchý Na vytvorenie odpovede Jersey je možné použiť aj obyčajný starý objekt Java (POJO).

Máme veľmi jednoduché Osoba POJO zobrazené nižšie, ktoré použijeme na zostavenie odpovede:

verejná trieda Osoba {meno reťazca; Adresa reťazca; // štandardný konštruktor // štandardné getre a setre}

The Osoba Teraz je možné POJO zvyknúť vráti JSON ako telo odpovede:

@GET @Path ("/ pojo") verejná odpoveď getPojoResponse () {Osoba osoba = nová Osoba ("Abhinayak", "Nepál"); návrat Response .status (Response.Status.OK) .entita (osoba) .build (); }

Fungovanie tohto koncového bodu GET je možné overiť pomocou nasledujúceho postupu zvlnenie príkaz:

curl -XGET // localhost: 8080 / dres / odpoveď / pojo

Osoba POJO sa transformuje na JSON a odošle sa späť ako odpoveď:

{"address": "Nepál", "name": "Abhinayak"}

3.5. Odpoveď JSON pomocou jednoduchého reťazca

Môžeme použiť predformátované reťazce na vytvorenie odpovede, a dá sa to urobiť jednoducho.

Nasledujúci koncový bod je príkladom toho, ako JSON predstavuje ako String je možné poslať späť ako JSON v odpovedi Jersey:

@GET @Path ("/ json") verejná odpoveď getJsonResponse () {String message = "{\" ahoj \ ": \" Toto je odpoveď JSON \ "}"; návrat Response .status (Response.Status.OK) .entity (message) .type (MediaType.APPLICATION_JSON) .build (); }

Toto je možné overiť vykonaním HTTP GET pomocou zvlnenie na overenie odpovede:

curl -XGET // localhost: 8080 / dres / odpoveď / json

Pri volaní tohto zdroja sa vráti JSON:

{"ahoj": "Toto je odpoveď JSON"}

Rovnaký vzor platí pre ďalšie bežné typy médií, ako sú XML alebo HTML. Musíme iba informovať Jersey, že používa XML alebo HTML MediaType.TEXT_XML alebo MediaType.TEXT_HTML a Jersey sa postará o zvyšok.

4. Záver

V tomto rýchlom článku sme vytvorili odpovede Jersey (JAX-RS) pre rôzne typy médií.

Všetky úryvky kódu uvedené v článku nájdete na stránkach GitHub.


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