Válasszon testet a JAX-RS-ben

1. Áttekintés

A REST webszolgáltatások és ügyfeleik Java-ban történő fejlesztésének egyszerűsítése érdekében a JAX-RS Jersey-nek hívták az API-t.

Jersey egy nyílt forráskódú keretrendszer a REST webszolgáltatások fejlesztéséhez, amelyek támogatást nyújtanak JAX-RS API-k és a JAX-RS referencia megvalósítás.

Ebben az oktatóanyagban megvizsgáljuk, hogyan állíthatjuk be a Jersey válaszadó test különböző közegtípusokkal.

2. Maven-függőségek

Először a következő függőségekre van szükségünk pom.xml fájl:

 org.glassfish.jersey.bundles jaxrs-ri 2.26 org.glassfish.jersey.core mez-szerver 2.26 

A legfrissebb verziója JAX-RS a jaxrs-ri címen található, és Jersey szerver megtalálható a jersey-server oldalon

3. Válasz Jersey-ben

Természetesen a válasz létrehozásának különböző módjai vannak Jersey, és az alábbiakban megvizsgáljuk, hogyan építhetjük fel őket.

Az összes példa itt HTTP GET kérés, és mi a következőt fogjuk használni becsavar parancsot az erőforrások tesztelésére.

3.1. Ok szöveges válasz

Az itt bemutatott végpont egy egyszerű példa arra, hogy az egyszerű szöveg hogyan adható vissza Jersey válaszként:

@GET @Path ("/ ok") nyilvános válasz getOkResponse () {String message = "Ez egy szöveges válasz"; return Válasz .status (Válasz.állapot.OK) .entity (üzenet) .build (); }

Használhatunk HTTP GET-et becsavar a válasz igazolásához:

göndör -XGET // localhost: 8080 / mez / válasz / ok

Ez a végpont a következőképpen küldi vissza a választ:

Ez egy szöveges válasz

Ha az adathordozó típusa nincs megadva, Jersey alapértelmezés szerint szöveg / sima.

3.2. Hiba elhárítás

A hibákat visszaküldhetjük Jersey válaszként:

@GET @Path ("/ not_ok") nyilvános válasz getNOkTextResponse () {String message = "Belső szerverhiba történt"; return Válasz .status (Válasz.állapot.INTERNAL_SERVER_ERROR) .entity (üzenet) .build (); }

A válasz ellenőrzéséhez megadhatunk egy HTTP GET kérést a becsavar :

göndör -XGET // localhost: 8080 / mez / response / not_ok

A hibaüzenetet a válasz visszaküldi:

Belső szerverhiba történt

3.3. Egyszerű szöveges válasz

Visszatérhetünk is egyszerű egyszerű szöveges válaszok:

@GET @Path ("/ text_plain") public Response getTextResponseTypeDefined () {String message = "Ez egy egyszerű szöveges válasz"; return Response .status (Response.Status.OK) .entity (message) .type (MediaType.TEXT_PLAIN) .build (); }

Ismét megtehetjük a HTTP GET használatát becsavar a válasz igazolásához:

curl -XGET // localhost: 8080 / mez / válasz / text_plain

A válasz a következő lesz:

Ez egy egyszerű szöveges válasz

Ugyanez az eredmény elérhető a Termel megjegyzés helyett a típus() módszer a Válasz:

@GET @Path ("/ text_plain_annotation") @Produces ({MediaType.TEXT_PLAIN}) public Response getTextResponseTypeAnnotated () {String message = "Ez egy egyszerű szöveges válasz annotációval"; return Válasz .status (Válasz.állapot.OK) .entity (üzenet) .build (); }

A válaszellenőrzést a becsavar:

göndör -XGET // localhost: 8080 / mez / response / text_plain_annotation

Íme a válasz:

Ez egy egyszerű szöveges válasz annotációval

3.4. JSON válasz a POJO használatával

Egy egyszerű A Plain Old Java Object (POJO) szintén használható Jersey válasz felépítéséhez.

Van egy nagyon egyszerű Személy Az alább látható POJO, amelyet a válasz felépítéséhez használunk:

public class Személy {String név; Karakterlánc cím; // szabványos kivitelező // szabványos szerelők és beállítók}

A Személy A POJO mostantól megszokható adja vissza a JSON-t mint válasz testet:

@GET @Path ("/ pojo") nyilvános válasz getPojoResponse () {Személy = új Személy ("Abhinayak", "Nepál"); return Válasz .status (Válasz.állapot.OK) .entity (személy) .build (); }

A GET végpont működése ellenőrizhető - a következők segítségével becsavar parancs:

göndör -XGET // localhost: 8080 / mez / response / pojo

A POJO személyt JSON-vá alakítják, és válaszként visszaküldik:

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

3.5. JSON válasz egyszerű karakterlánc használatával

Tudjuk használni előre formázott karakterláncok a válasz létrehozásához, és egyszerűen megtehető.

A következő végpont egy példa arra, hogy egy JSON hogyan ábrázolt a Húr visszaküldhető JSON néven a Jersey válaszban:

@GET @Path ("/ json") nyilvános válasz getJsonResponse () {String message = "{\" hello \ ": \" Ez egy JSON válasz \ "}"; return Response .status (Response.Status.OK) .entity (message) .type (MediaType.APPLICATION_JSON) .build (); }

Ezt egy HTTP GET használatával ellenőrizheti becsavar a válasz igazolásához:

göndör -XGET // localhost: 8080 / mez / response / json

Ennek az erőforrásnak a meghívásával JSON-t kap:

{"hello": "Ez egy JSON válasz"}

Ugyanez a minta vonatkozik más elterjedt médiatípusokra is, például XML vagy HTML. Csak értesítenünk kell Jersey-t, hogy XML vagy HTML-t használ MediaType.TEXT_XML vagy MediaType.TEXT_HTML és Jersey intézi a többit.

4. Következtetés

Ebben a gyors cikkben Jersey (JAX-RS) válaszokat készítettünk különféle médiatípusokhoz.

A cikkben említett összes kódrészlet megtalálható a GitHubon.