JAX-RS klient med Jersey
1. Oversigt
Jersey er en open source-ramme til udvikling af RESTFul Web Services. Det har også store indbyggede klientfunktioner.
I denne hurtige vejledning vil vi undersøge oprettelsen af JAX-RS-klient ved hjælp af Jersey 2.
For en diskussion om oprettelsen af RESTful Web Services ved hjælp af Jersey henvises til denne artikel.
2. Maven-afhængigheder
Lad os begynde med at tilføje de krævede afhængigheder (for Jersey JAX-RS-klient) i pom.xml:
org.glassfish.jersey.core jersey-klient 2.25.1
Sådan bruges Jackson 2.x som JSON-udbyder:
org.glassfish.jersey.media jersey-media-json-jackson 2.25.1
Den seneste version af disse afhængigheder kan findes på jersey-client og jersey-media-json-jackson.
3. RESTFul-klient i Jersey
Vi udvikler en JAX-RS-klient til at forbruge de JSON- og XML REST-API'er, som vi udviklede her (vi skal sørge for, at tjenesten er implementeret, og URL'en er tilgængelig).
3.1. Ressourcerepræsentationsklasse
Lad os se på ressourcerepræsentationsklassen:
@XmlRootElement offentlig klasse medarbejder {privat int id; privat streng fornavn; // standard getters og setter}
JAXB-kommentarer som @XmlRootElement kræves kun, hvis der er behov for XML-support.
3.2. Oprettelse af en forekomst af en Klient
Den første ting, vi har brug for, er en forekomst af en Klient:
Klientklient = ClientBuilder.newClient ();
3.3. Oprettelse af en WebTarget
Når vi har den Klient eksempel kan vi oprette en WebTarget ved hjælp af URI for den målrettede webressource:
WebTarget webTarget = client.target ("// localhost: 8082 / spring-jersey");
Ved brug af WebTarget, kan vi definere en sti til en bestemt ressource:
WebTarget-medarbejderWebTarget = webTarget.path ("ressourcer / medarbejdere");
3.4. Opbygning af en HTTP-anmodning
En påkaldsbyggerinstans oprettes en af WebTarget.request () metoder:
Invocation.Builder invocationBuilder = medarbejderWebTarget.request (MediaType.APPLICATION_JSON);
For XML-format, MediaType.APPLICATION_XML Kan bruges.
3.5. Påkald af HTTP-anmodninger
Påkalder HTTP GET:
Svarrespons = invocationBuilder.get (Medarbejder.klasse);
Påkalder HTTP POST:
Svarrespons = invocationBuilder .post (Entity.entity (medarbejder, MediaType.APPLICATION_JSON);
3.6. Eksempel på REST-klient
Lad os begynde at skrive en simpel REST-klient. Det getJsonEmployee () metode henter en Medarbejder objekt baseret på medarbejderen id. Den JSON, der returneres af REST-webtjenesten, deserialiseres til Medarbejder genstand inden retur.
Brug JAX-RS API flydende til at oprette webmål, påkaldsbygger og påberåbe sig en GET HTTP-anmodning:
offentlig klasse RestClient {privat statisk endelig streng REST_URI = "// localhost: 8082 / spring-jersey / resources / ansatte"; privat klient klient = ClientBuilder.newClient (); offentlig medarbejder getJsonEmployee (int id) {return client .target (REST_URI) .path (String.valueOf (id)) .request (MediaType.APPLICATION_JSON) .get (Employee.class); } // ...}
Lad os nu tilføje en metode til POST HTTP-anmodning. Det createJsonEmployee () metode skaber en Medarbejder ved at påberåbe sig REST Web Service for Medarbejder skabelse. Klient-API'et internt serielt Medarbejder modsætter sig JSON, før du påberåber dig HTTP POST-metoden:
offentlig reaktion createJsonEmployee (Medarbejder emp) {return client .target (REST_URI) .request (MediaType.APPLICATION_JSON) .post (Entity.entity (emp, MediaType.APPLICATION_JSON)); }
4. Test af klienten
Lad os teste vores klient med JUnit:
offentlig klasse JerseyClientLiveTest {offentlig statisk endelig int HTTP_CREATED = 201; privat RestClient-klient = ny RestClient (); @Test offentlig ugyldighed givenCorrectObject_whenCorrectJsonRequest_thenResponseCodeCreated () {Medarbejder emp = ny medarbejder (6, "Johny"); Svarrespons = client.createJsonEmployee (emp); assertEquals (respons.getStatus (), HTTP_CREATED); }}
5. Konklusion
I denne artikel har vi introduceret JAX-RS-klient ved hjælp af Jersey 2 og udviklet en simpel RESTFul Java-klient.
Som altid er den fulde kildekode tilgængelig i dette Github-projekt.