לקוח 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 זה.