JAX-RS kliens Jersey-vel

1. Áttekintés

Jersey egy nyílt forráskódú keretrendszer a RESTFul Web Services fejlesztéséhez. Remek beépített ügyfél-képességekkel is rendelkezik.

Ebben a gyors bemutatóban feltárjuk a JAX-RS kliens létrehozását a Jersey 2 segítségével.

A RESTful webszolgáltatások Jersey használatával történő létrehozásáról a jelen cikkben olvashat.

2. Maven-függőségek

Kezdjük azzal, hogy hozzáadjuk a szükséges függőségeket (Jersey JAX-RS klienshez) a pom.xml:

 org.glassfish.jersey.core mez-kliens 2.25.1 

A Jackson 2.x használata JSON szolgáltatóként:

 org.glassfish.jersey.media mez-media-json-jackson 2.25.1 

Ezen függőségek legújabb verziója megtalálható a jersey-client és a jersey-media-json-jackson oldalakon.

3. RESTFul kliens Jersey-ben

JAX-RS klienst fejlesztünk ki az itt kifejlesztett JSON és XML REST API-k fogyasztására (meg kell győződnünk arról, hogy a szolgáltatás telepítve van, és az URL elérhető).

3.1. Erőforrás-reprezentációs osztály

Vessünk egy pillantást az erőforrás-reprezentációs osztályra:

@XmlRootElement public class Employee {private int id; privát karakterlánc keresztnév; // szabványos mérőeszközök és beállítók}

A JAXB annotációk tetszik @XmlRootElement csak akkor szükségesek, ha XML támogatásra van szükség.

3.2. Példány létrehozása a Ügyfél

Az első dolog, amire szükségünk van, az a Ügyfél:

Ügyfél kliens = ClientBuilder.newClient ();

3.3. A. Létrehozása Webcél

Ha megvan a Ügyfél például létrehozhatunk egy Webcél a megcélzott webes erőforrás URI-ját használva:

WebTarget webTarget = client.target ("// localhost: 8082 / spring-jersey");

Használata Webcél, meghatározhatunk egy adott erőforrás elérési útját:

WebTarget alkalmazottWebTarget = webTarget.path ("források / alkalmazottak");

3.4. HTTP kérés meghívás létrehozása

Meghívás-készítő példány jön létre az egyik WebTarget.request () mód:

Invocation.Builder invocationBuilder = workerWebTarget.request (MediaType.APPLICATION_JSON);

XML formátum esetén MediaType.APPLICATION_XML használható.

3.5. HTTP kérések meghívása

A HTTP GET meghívása:

Válaszválasz = invocationBuilder.get (Employee.class);

HTTP POST meghívása:

Válaszválasz = invocationBuilder .post (Entity.entity (alkalmazott, MediaType.APPLICATION_JSON);

3.6. Minta REST kliens

Kezdjük el írni egy egyszerű REST klienst. A getJsonEmployee () metódus beolvas egy Munkavállaló tárgy az alkalmazott alapján id. A REST webszolgáltatás által visszaküldött JSON-t deserializálták a Munkavállaló objektum, mielőtt visszatérne.

A JAX-RS API folyékony használata webes célok, meghívás-készítők és GET HTTP-kérelmek létrehozásához:

public class RestClient {private static final String REST_URI = "// localhost: 8082 / spring-jersey / resources / alkalmazottak"; privát kliens kliens = ClientBuilder.newClient (); public Employee getJsonEmployee (int id) {return client .target (REST_URI) .path (String.valueOf (id)) .request (MediaType.APPLICATION_JSON) .get (Employee.class); } // ...}

Most adjunk hozzá egy módszert a POST HTTP kéréshez. A createJsonEmployee () módszer létrehoz egy Munkavállaló a REST webszolgáltatás meghívásával Munkavállaló Teremtés. Az ügyfél API belső sorosítja a Munkavállaló objektum a JSON-hoz a HTTP POST metódus meghívása előtt:

public Response createJsonEmployee (Employee emp) {return client .target (REST_URI) .request (MediaType.APPLICATION_JSON) .post (Entity.entity (emp, MediaType.APPLICATION_JSON)); }

4. Az ügyfél tesztelése

Teszteljük ügyfelünket a JUnittel:

JerseyClientLiveTest nyilvános osztály {public static final int HTTP_CREATED = 201; privát RestClient kliens = új RestClient (); @Test public void givenCorrectObject_whenCorrectJsonRequest_thenResponseCodeCreated () {Employee emp = new Employee (6, "Johny"); Válaszválasz = client.createJsonEmployee (emp); assertEquals (response.getStatus (), HTTP_CREATED); }}

5. Következtetés

Ebben a cikkben bemutattuk a JAX-RS klienst a Jersey 2 segítségével, és kifejlesztettünk egy egyszerű RESTFul Java klienst.

Mint mindig, a teljes forráskód is elérhető ebben a Github projektben.


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