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.