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.