Klijent JAX-RS s Jerseyem

1. Pregled

Jersey je okvir otvorenog koda za razvoj RESTFul web usluga. Također ima sjajne ugrađene mogućnosti klijenta.

U ovom brzom vodiču istražit ćemo stvaranje JAX-RS klijenta koristeći Jersey 2.

Za raspravu o stvaranju RESTful web usluga pomoću Jerseyja, pogledajte ovaj članak.

2. Ovisnosti Mavena

Počnimo s dodavanjem potrebnih ovisnosti (za Jersey JAX-RS klijenta) u pom.xml:

 org.glassfish.jersey.core dres-klijent 2.25.1 

Da biste koristili Jackson 2.x kao JSON dobavljača:

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

Najnoviju verziju ovih ovisnosti možete pronaći na jersey-client i jersey-media-json-jackson.

3. RESTFul klijent u Jerseyu

Razvit ćemo JAX-RS klijent za upotrebu JSON i XML REST API-ja koje smo ovdje razvili (moramo biti sigurni da je usluga postavljena i da je URL dostupan).

3.1. Klasa predstavljanja resursa

Pogledajmo klasu predstavljanja resursa:

@XmlRootElement zaposlenik javne klase {private int id; private String firstName; // standardni geteri i postavljači}

JAXB napomene poput @XmlRootElement potrebni su samo ako je potrebna podrška za XML.

3.2. Stvaranje primjerka a Klijent

Prvo što trebamo je instanca a Klijent:

Klijent klijent = ClientBuilder.newClient ();

3.3. Stvaranje a WebTarget

Jednom kad imamo Klijent primjerice, možemo stvoriti WebTarget koristeći URI ciljanog web resursa:

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

Koristeći WebTarget, možemo definirati put do određenog resursa:

WebTarget zaposlenikWebTarget = webTarget.path ("resursi / zaposlenici");

3.4. Izrada poziva na HTTP zahtjev

Instanca graditelja poziva je stvorena jedna od WebTarget.request () metode:

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

Za XML format, MediaType.APPLICATION_XML može se koristiti.

3.5. Pozivanje HTTP zahtjeva

Pozivanje HTTP GET:

Odgovor odgovora = invocationBuilder.get (Employee.class);

Pozivanje HTTP POST-a:

Odgovor odgovora = invocationBuilder .post (Entity.entity (zaposlenik, MediaType.APPLICATION_JSON);

3.6. Uzorak REST klijenta

Počnimo s pisanjem jednostavnog REST klijenta. The getJsonEfficiee () metoda dohvaća Zaposlenik objekt zasnovan na zaposleniku iskaznica. JSON koji je REST web usluga vratila deserijaliziran je na Zaposlenik objekt prije povratka.

Korištenje API-ja JAX-RS tečno za stvaranje web cilja, graditelja poziva i pozivanje GET HTTP zahtjeva:

javna klasa RestClient {private static final String REST_URI = "// localhost: 8082 / spring-jersey / resources / zaposlenici"; privatni klijent klijent = ClientBuilder.newClient (); public Employee getJsonEfficiee (int id) {return client .target (REST_URI) .path (String.valueOf (id)) .request (MediaType.APPLICATION_JSON) .get (Employee.class); } // ...}

Dodajmo sada metodu za POST HTTP zahtjev. The createJsonEfficiee () metoda stvara Zaposlenik pozivanjem REST web usluge za Zaposlenik stvaranje. Klijentski API interno serializira Zaposlenik objekt JSON-u prije pozivanja metode HTTP POST:

javni odgovor createJsonE Employee (Employee emp) {return client .target (REST_URI) .request (MediaType.APPLICATION_JSON) .post (Entity.entity (emp, MediaType.APPLICATION_JSON)); }

4. Testiranje klijenta

Isprobajmo svog klijenta s JUnit-om:

javna klasa JerseyClientLiveTest {javni statički konačni int HTTP_CREATED = 201; privatni klijent RestClient = novi RestClient (); @Test javna praznina givenCorrectObject_whenCorrectJsonRequest_thenResponseCodeCreated () {Zaposlenik emp = novi zaposlenik (6, "Johny"); Odgovor odgovora = client.createJsonEfficiee (emp); assertEquals (response.getStatus (), HTTP_CREATED); }}

5. Zaključak

U ovom smo članku predstavili JAX-RS klijent koristeći Jersey 2 i razvili jednostavan RESTFul Java klijent.

Kao i uvijek, puni izvorni kod dostupan je u ovom projektu Github.