לקוח JAX-RS עם ג'רזי

1. סקירה כללית

ג'רזי היא מסגרת קוד פתוח לפיתוח שירותי אינטרנט RESTFul. יש לו גם יכולות לקוח מובנות נהדרות.

במדריך מהיר זה, נחקור את יצירת הלקוח JAX-RS באמצעות ג'רזי 2.

לדיון על יצירת שירותי אינטרנט RESTful באמצעות ג'רזי, עיין במאמר זה.

2. תלות Maven

נתחיל בהוספה של התלות הנדרשת (עבור לקוח JAX-RS ג'רזי) ב- pom.xml:

 org.glassfish.jersey.core jersey-client 2.25.1 

כדי להשתמש בג'קסון 2.x כספק JSON:

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

את הגרסה האחרונה של תלות אלה ניתן למצוא ב- jersey-client ו- jersey-media-json-jackson.

3. לקוח RESTFul בג'רזי

אנו נפתח לקוח JAX-RS שיצרוך את ממשקי ה- API של JSON ו- XML ​​REST שפיתחנו כאן (עלינו לוודא כי השירות פרוס וכתובת האתר נגישה).

3.1. כיתת ייצוג משאבים

בואו נסתכל על מחלקת ייצוג המשאבים:

עובד בכיתה ציבורית @XmlRootElement {מזהה פרטי פרטי; פרטי מחרוזת firstName; // סטרים וקובעים סטנדרטיים}

הערות JAXB כמו @XmlRootElement נדרשים רק אם יש צורך בתמיכה ב- XML.

3.2. יצירת מופע של א לָקוּחַ

הדבר הראשון שאנחנו צריכים הוא מופע של לָקוּחַ:

לקוח לקוח = ClientBuilder.newClient ();

3.3. ליצור WebTarget

ברגע שיש לנו את לָקוּחַ למשל, אנו יכולים ליצור WebTarget באמצעות ה- URI של משאב האינטרנט הממוקד:

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

באמצעות WebTarget, אנו יכולים להגדיר נתיב למשאב ספציפי:

WebTarget employeeWebTarget = webTarget.path ("משאבים / עובדים");

3.4. בניית הזמנה לבקשת HTTP

מופע בונה קריאה נוצר אחד מה- WebTarget.request () שיטות:

Invocation.Builder invocationBuilder = עובדWebTarget.request (MediaType.APPLICATION_JSON);

לפורמט XML, MediaType.APPLICATION_XML יכול לשמש.

3.5. הפעלת בקשות HTTP

הפעלת HTTP GET:

תגובת תגובה = invocationBuilder.get (שכיר עובד);

הפעלת HTTP POST:

תגובת תגובה = invocationBuilder .post (Entity.entity (עובד, MediaType.APPLICATION_JSON);

3.6. לקוח REST לדוגמא

נתחיל לכתוב לקוח REST פשוט. ה getJsonEmployee () שיטה מאחזרת an עוֹבֵד אובייקט המבוסס על העובד תְעוּדַת זֶהוּת. ה- JSON שהוחזר על ידי שירות האינטרנט REST מוסר לניתוק הערכה עוֹבֵד חפץ לפני החזרה.

שימוש ב- API של JAX-RS באופן שוטף ליצירת יעד אינטרנט, בונה קריאה והפעלת בקשת GET HTTP:

מחלקה ציבורית RestClient {סופי סטטי פרטי מחרוזת REST_URI = "// localhost: 8082 / spring-jersey / resources / workers"; לקוח פרטי לקוח = ClientBuilder.newClient (); עובד ציבורי getJsonEm Employee (int id) {return client .target (REST_URI) .path (String.valueOf (id)) .request (MediaType.APPLICATION_JSON). get (Employee.class); } // ...}

בואו כעת להוסיף שיטה לבקשת POST HTTP. ה createJsonEmployee () שיטה יוצרת עוֹבֵד על ידי הפעלת שירות האינטרנט REST עבור עוֹבֵד יצירה. ממשק ה- API של הלקוח מסדר פנימי את ה- עוֹבֵד התנגד ל- JSON לפני שתפעיל את שיטת HTTP POST:

תגובה ציבורית createJsonEmployee (עובד עובד) {return client .target (REST_URI) .request (MediaType.APPLICATION_JSON). post (Entity.entity (emp, MediaType.APPLICATION_JSON)); }

4. בדיקת הלקוח

בואו לבדוק את הלקוח שלנו עם JUnit:

מחלקה ציבורית JerseyClientLiveTest {final final static int HTTP_CREATED = 201; לקוח RestClient פרטי = RestClient חדש (); @ מבחן הריק ציבורי givenCorrectObject_whenCorrectJsonRequest_thenResponseCodeCreated () {עובד emp = עובד חדש (6, "ג'וני"); תגובת תגובה = client.createJsonEmployee (emp); assertEquals (response.getStatus (), HTTP_CREATED); }}

5. מסקנה

במאמר זה הצגנו לקוח JAX-RS באמצעות ג'רזי 2 ופיתחנו לקוח Java פשוט של RESTFul.

כמו תמיד, קוד המקור המלא זמין בפרויקט Github זה.


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