Klient JAX-RS s Jersey

1. Prehľad

Jersey je rámec otvoreného zdroja pre vývoj webových služieb RESTFul. Má tiež vynikajúce zabudované schopnosti klienta.

V tomto rýchlom výučbe preskúmame vytvorenie klienta JAX-RS pomocou Jersey 2.

Diskusiu o vytváraní webových služieb RESTful pomocou servera Jersey nájdete v tomto článku.

2. Maven závislosti

Začnime pridaním požadovaných závislostí (pre klienta Jersey JAX-RS) do súboru pom.xml:

 org.glassfish.jersey.core dres-klient 2.25.1 

Ak chcete použiť Jackson 2.x ako poskytovateľa JSON:

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

Najnovšiu verziu týchto závislostí nájdete na stránkach dres-client a Jersey-media-json-jackson.

3. Klient RESTFul v Jersey

Vyvinieme klienta JAX-RS, ktorý bude využívať rozhrania JSON a XML REST API, ktoré sme tu vyvinuli (musíme sa uistiť, že je služba nasadená a adresa URL je prístupná).

3.1. Trieda zastúpenia zdrojov

Poďme sa pozrieť na triedu zastúpenia prostriedkov:

@XmlRootElement verejná trieda Employee {private int id; private String meno; // štandardné getre a setre}

Anotácie JAXB ako @XmlRootElement sú potrebné iba v prípade, že je potrebná podpora XML.

3.2. Vytvorenie inštancie a Zákazník

Prvá vec, ktorú potrebujeme, je inštancia a Zákazník:

Klient klient = ClientBuilder.newClient ();

3.3. Vytvorenie a WebTarget

Akonáhle máme Zákazník napríklad môžeme vytvoriť a WebTarget pomocou URI cieľového webového zdroja:

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

Použitím WebTarget, môžeme definovať cestu ku konkrétnemu zdroju:

WebTarget employeeWebTarget = webTarget.path ("zdroje / zamestnanci");

3.4. Vytvorenie žiadosti o HTTP

Inštancia generátora vyvolania je vytvorená jednou z WebTarget.request () metódy:

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

Pre formát XML MediaType.APPLICATION_XML môže byť použité.

3.5. Vyvolávanie požiadaviek HTTP

Vyvolávanie HTTP GET:

Odozva odpovede = invocationBuilder.get (Employee.class);

Vyvolávanie HTTP POST:

Odozva odozvy = invocationBuilder .post (Entity.entity (zamestnanec, MediaType.APPLICATION_JSON);

3.6. Vzorový klient REST

Začnime písať jednoduchého klienta REST. The getJsonEmployee () metóda načíta Zamestnanec objekt založený na zamestnancovi id. JSON vrátený webovou službou REST sa deserializuje na Zamestnanec objekt pred návratom.

Plynulé používanie rozhrania JAX-RS API na vytvorenie webového cieľa, nástroja na vyvolanie vyvolania a vyvolanie požiadavky GET HTTP:

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

Teraz pridajme metódu požiadavky POST HTTP. The createJsonEmployee () metóda vytvára Zamestnanec vyvolaním webovej služby REST pre Zamestnanec stvorenie. Klientské rozhranie API interne serializuje server Zamestnanec namietajte proti JSON pred vyvolaním metódy HTTP POST:

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

4. Testovanie klienta

Vyskúšajme nášho klienta s JUnit:

public class JerseyClientLiveTest {public static final int HTTP_CREATED = 201; súkromný klient RestClient = nový RestClient (); @Test public void givenCorrectObject_whenCorrectJsonRequest_thenResponseCodeCreated () {zamestnanec emp = nový zamestnanec (6, "Johny"); Odozva odpoveď = client.createJsonEmployee (emp); assertEquals (response.getStatus (), HTTP_CREATED); }}

5. Záver

V tomto článku sme predstavili klienta JAX-RS s použitím Jersey 2 a vyvinuli sme jednoduchého klienta Java RESTFul.

Úplný zdrojový kód je ako vždy k dispozícii v tomto projekte Github.


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