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.