JAX-RS klient med Jersey

1. Oversikt

Jersey er et open source-rammeverk for utvikling av RESTFul Web Services. Den har også store innebygde klientfunksjoner.

I denne raske opplæringen vil vi utforske etableringen av JAX-RS-klienten ved hjelp av Jersey 2.

For en diskusjon om etableringen av RESTful Web Services ved bruk av Jersey, se denne artikkelen.

2. Maven-avhengigheter

La oss begynne med å legge til de nødvendige avhengighetene (for Jersey JAX-RS-klient) i pom.xml:

 org.glassfish.jersey.core jersey-client 2.25.1 

Slik bruker du Jackson 2.x som JSON-leverandør:

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

Den siste versjonen av disse avhengighetene finner du på jersey-client og jersey-media-json-jackson.

3. RESTFul-klient i Jersey

Vi vil utvikle en JAX-RS-klient for å konsumere JSON- og XML REST-API-ene som vi utviklet her (vi må sørge for at tjenesten er distribuert og URL-en er tilgjengelig).

3.1. Ressursrepresentasjonsklasse

La oss ta en titt på ressursrepresentasjonsklassen:

@XmlRootElement offentlig klasse ansatt {privat int id; privat streng fornavn; // standard getters og setters}

JAXB-merknader som @XmlRootElement kreves bare hvis XML-støtte er nødvendig.

3.2. Lage en forekomst av en Klient

Det første vi trenger er en forekomst av en Klient:

Klientklient = ClientBuilder.newClient ();

3.3. Opprette en WebTarget

Når vi har fått Klient for eksempel kan vi opprette en WebTarget ved hjelp av URI for den målrettede nettressursen:

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

Ved hjelp av WebTarget, kan vi definere en bane til en bestemt ressurs:

WebTarget-medarbeiderWebTarget = webTarget.path ("ressurser / ansatte");

3.4. Bygg en HTTP-forespørsel

En anropsbyggerinstans er opprettet en av WebTarget.request () metoder:

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

For XML-format, MediaType.APPLICATION_XML kan bli brukt.

3.5. Påkalle HTTP-forespørsler

Påkalle HTTP GET:

Svarrespons = invocationBuilder.get (ansatt.klasse);

Påkaller HTTP POST:

Svarrespons = invocationBuilder .post (Entity.entity (ansatt, MediaType.APPLICATION_JSON);

3.6. Eksempel på REST-klient

La oss begynne å skrive en enkel REST-klient. De getJsonEmployee () metoden henter en Ansatt objekt basert på den ansatte id. JSON returnert av REST Web Service blir deserialisert til Ansatt gjenstand før retur.

Ved hjelp av JAX-RS API flytende for å lage webmål, påkallingsbygger og påkalle en GET HTTP-forespørsel:

offentlig klasse RestClient {privat statisk finale String REST_URI = "// localhost: 8082 / spring-jersey / resources / ansatte"; privat klientklient = ClientBuilder.newClient (); offentlig ansatt getJsonEmployee (int id) {return client .target (REST_URI) .path (String.valueOf (id)) .request (MediaType.APPLICATION_JSON) .get (Employee.class); } // ...}

La oss nå legge til en metode for POST HTTP-forespørsel. De createJsonEmployee () metoden skaper en Ansatt ved å påkalle REST Web Service for Ansatt opprettelse. Klient-API-et serialiserer internt Ansatt motsette deg JSON før du påkaller HTTP POST-metoden:

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

4. Testing av klienten

La oss teste vår klient med JUnit:

offentlig klasse JerseyClientLiveTest {offentlig statisk slutt int HTTP_CREATED = 201; privat RestClient-klient = ny RestClient (); @Test offentlig ugyldig gittCorrectObject_whenCorrectJsonRequest_thenResponseCodeCreated () {Employee emp = new Employee (6, "Johny"); Svarrespons = client.createJsonEmployee (emp); assertEquals (respons.getStatus (), HTTP_CREATED); }}

5. Konklusjon

I denne artikkelen har vi introdusert JAX-RS-klienten ved hjelp av Jersey 2 og utviklet en enkel RESTFul Java-klient.

Som alltid er hele kildekoden tilgjengelig i dette Github-prosjektet.


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