1. Gambaran keseluruhan
Jersey adalah rangka kerja sumber terbuka untuk membangunkan RESTFul Web Services. Ia juga mempunyai keupayaan pelanggan yang hebat.
Dalam tutorial ringkas ini, kita akan meneroka penciptaan klien JAX-RS menggunakan Jersey 2.
Untuk perbincangan mengenai penciptaan RESTful Web Services menggunakan Jersey, sila rujuk artikel ini.
2. Pergantungan Maven
Mari mulakan dengan menambahkan kebergantungan yang diperlukan (untuk pelanggan Jersey JAX-RS) di pom.xml :
org.glassfish.jersey.core jersey-client 2.25.1
Untuk menggunakan Jackson 2.x sebagai penyedia JSON:
org.glassfish.jersey.media jersey-media-json-jackson 2.25.1
Versi terbaru dari kebergantungan ini boleh didapati di jersey-client dan jersey-media-json-jackson.
3. Pelanggan RESTFul di Jersey
Kami akan mengembangkan klien JAX-RS untuk menggunakan JSON dan XML REST API yang kami kembangkan di sini (kami perlu memastikan bahawa perkhidmatan tersebut digunakan dan URL dapat diakses).
3.1. Kelas Perwakilan Sumber
Mari lihat kelas perwakilan sumber:
@XmlRootElement public class Employee { private int id; private String firstName; // standard getters and setters }
Anotasi JAXB seperti @XmlRootElement hanya diperlukan jika sokongan XML diperlukan.
3.2. Membuat Contoh Pelanggan
Perkara pertama yang kami perlukan adalah contoh Pelanggan :
Client client = ClientBuilder.newClient();
3.3. Membuat WebTarget
Sebaik sahaja kita mempunyai contoh Pelanggan , kita dapat membuat WebTarget menggunakan URI sumber web yang disasarkan:
WebTarget webTarget = client.target("//localhost:8082/spring-jersey");
Dengan menggunakan WebTarget , kita dapat menentukan jalan ke sumber tertentu:
WebTarget employeeWebTarget = webTarget.path("resources/employees");
3.4. Membangun Permintaan Permintaan HTTP
Contoh pembangun permintaan dibuat salah satu kaedah WebTarget.request () :
Invocation.Builder invocationBuilder = employeeWebTarget.request(MediaType.APPLICATION_JSON);
Untuk format XML, MediaType.APPLICATION_XML boleh digunakan.
3.5. Memohon Permintaan HTTP
Memohon HTTP DAPATKAN:
Response response = invocationBuilder.get(Employee.class);
Memohon HTTP POST:
Response response = invocationBuilder .post(Entity.entity(employee, MediaType.APPLICATION_JSON);
3.6. Contoh Pelanggan REST
Mari mula menulis pelanggan REST sederhana. Kaedah getJsonEm Employee () mengambil objek Pekerja berdasarkan id pekerja . JSON yang dikembalikan oleh REST Web Service terdeseralisasi ke objek Kakitangan sebelum kembali.
Menggunakan API JAX-RS dengan lancar untuk membuat sasaran web, pembangun permintaan dan memohon permintaan GET HTTP:
public class RestClient { private static final String REST_URI = "//localhost:8082/spring-jersey/resources/employees"; private Client client = ClientBuilder.newClient(); public Employee getJsonEmployee(int id) { return client .target(REST_URI) .path(String.valueOf(id)) .request(MediaType.APPLICATION_JSON) .get(Employee.class); } //... }
Mari sekarang tambahkan kaedah untuk permintaan POST HTTP. Kaedah createJsonEm Employee () membuat Pekerja dengan menggunakan Perkhidmatan Web REST untuk penciptaan Pekerja . API klien secara bersiri membual objek Kakitangan ke JSON sebelum menggunakan kaedah HTTP POST:
public Response createJsonEmployee(Employee emp) { return client .target(REST_URI) .request(MediaType.APPLICATION_JSON) .post(Entity.entity(emp, MediaType.APPLICATION_JSON)); }
4. Menguji Pelanggan
Mari uji pelanggan kami dengan JUnit:
public class JerseyClientLiveTest { public static final int HTTP_CREATED = 201; private RestClient client = new RestClient(); @Test public void givenCorrectObject_whenCorrectJsonRequest_thenResponseCodeCreated() { Employee emp = new Employee(6, "Johny"); Response response = client.createJsonEmployee(emp); assertEquals(response.getStatus(), HTTP_CREATED); } }
5. Kesimpulan
Dalam artikel ini, kami telah memperkenalkan klien JAX-RS menggunakan Jersey 2 dan mengembangkan klien RESTFul Java yang sederhana.
Seperti biasa, kod sumber penuh terdapat dalam projek Github ini.