הגדר גוף תגובה ב- JAX-RS
1. סקירה כללית
כדי לפשט את הפיתוח של שירותי רשת REST ולקוחותיהם בג'אווה, יישום סטנדרטי ונייד של JAX-RS תוכנן API אשר נקרא ג'רזי.
ג'רזי היא מסגרת קוד פתוח לפיתוח שירותי רשת REST המספקים תמיכה עבור JAX-RS ממשקי API ומשמש כ- JAX-RS יישום הפניה.
במדריך זה נבדוק כיצד נוכל להגדיר א ג'רזי גוף תגובה עם סוגי מדיה שונים.
2. תלות Maven
ראשית, אנו זקוקים לתלות הבאות הכלולות ב- pom.xml קוֹבֶץ:
org.glassfish.jersey.bundles jaxrs-ri 2.26 org.glassfish.jersey.core jersey-server 2.26
הגרסה האחרונה של JAX-RS ניתן למצוא באתר jaxrs-ri, ו- ג'רזי ניתן למצוא את השרת ב- jersey-server
3. תגובה בג'רזי
מטבע הדברים, ישנן דרכים שונות לבנות תגובה באמצעות ג'רזיונבדוק כיצד נוכל לבנות אותם למטה.
כל הדוגמאות כאן הן בקשות HTTP GET, ואנחנו נשתמש ב- סִלְסוּל פקודה לבדוק את המשאבים.
3.1. תגובת טקסט בסדר
נקודת הקצה המוצגת כאן היא דוגמה פשוטה לאופן שבו ניתן להחזיר טקסט רגיל כתגובה ג'רזי:
@GET @Path ("/ בסדר") תגובה ציבורית getOkResponse () {String message = "זוהי תגובת טקסט"; החזר תגובה. סטטוס (תגובה. סטטוס.אוק). ישות (הודעה). בניין () }
אנחנו יכולים לעשות HTTP GET באמצעות סִלְסוּל כדי לאמת את התגובה:
תלתל -XGET // localhost: 8080 / ג 'רזי / תגובה / בסדר
נקודת קצה זו תחזיר תגובה כדלקמן:
זוהי תגובה לטקסט
כשסוג המדיה אינו מצוין, ג'רזי תוגדר כברירת מחדל לטקסט / רגיל.
3.2. תגובת שגיאה
ניתן גם לשלוח שגיאות בחזרה כתגובת ג'רזי:
@GET @Path ("/ not_ok") תגובה ציבורית getNOkTextResponse () {String message = "הייתה שגיאת שרת פנימית"; להחזיר תגובה. סטטוס (תגובה. סטטוס. INTERNAL_SERVER_ERROR). ישות (הודעה). בניין (); }
כדי לאמת את התגובה, אנו יכולים לעשות בקשת HTTP GET באמצעות סִלְסוּל :
תלתל -XGET // localhost: 8080 / ג 'רזי / תגובה / not_ok
הודעת השגיאה תישלח חזרה בתגובה:
אירעה שגיאת שרת פנימית
3.3. תגובה לטקסט רגיל
אנחנו יכולים גם לחזור תגובות פשוטות בטקסט פשוט:
@GET @Path ("/ text_plain") תגובה ציבורית getTextResponseTypeDefined () {String message = "זו תגובה לטקסט רגיל"; להחזיר תגובה. סטטוס (תגובה.Status.OK). אחדות (הודעה). סוג (MediaType.TEXT_PLAIN) .build (); }
שוב, אנו יכולים לבצע HTTP GET באמצעות סִלְסוּל כדי לאמת את התגובה:
תלתל -XGET // localhost: 8080 / ג 'רזי / תגובה / text_plain
התגובה תהיה כדלקמן:
זוהי תגובה בטקסט רגיל
אותה תוצאה יכולה להיות מושגת גם באמצעות מפיק ביאור במקום להשתמש ב- סוּג() שיטה ב תְגוּבָה:
@GET @Path ("/ text_plain_annotation") @Produces ({MediaType.TEXT_PLAIN}) תגובה ציבורית getTextResponseTypeAnnotated () {String message = "זוהי תגובה לטקסט רגיל באמצעות ביאור"; החזר תגובה. סטטוס (תגובה.Status.OK). אחדות (הודעה) .בניין (); }
אנו יכולים לבצע אימות תגובה באמצעות סִלְסוּל:
תלתל -XGET // localhost: 8080 / ג 'רזי / תגובה / text_plain_annotation
הנה התגובה:
זוהי תגובה בטקסט רגיל באמצעות ביאור
3.4. תגובת JSON באמצעות POJO
פשוט ניתן להשתמש באובייקט Java ישן רגיל (POJO) לבנות תגובה ג'רזי.
יש לנו פשוט מאוד אדם POJO המוצג למטה, בו נשתמש לבניית תגובה:
אדם בכיתה ציבורית {שם מחרוזת; כתובת מחרוזת; // קונסטרוקטור סטנדרטי // גטרים וקובעים סטנדרטיים}
ה אדם עכשיו ניתן להשתמש ב- POJO להחזיר את JSON כגוף התגובה:
@GET @Path ("/ pojo") תגובה ציבורית getPojoResponse () {אדם אדם = אדם חדש ("Abhinayak", "נפאל"); החזרת תגובה. סטטוס (תגובה. סטטוס. אוק). אישיות (אדם). בניין (); }
ניתן לאמת את פעולתו של נקודת קצה זו ב- GET - באמצעות הדברים הבאים סִלְסוּל פקודה:
תלתל -XGET // localhost: 8080 / ג 'רזי / תגובה / pojo
האדם POJO יהפוך ל- JSON וישלח חזרה כתגובה:
{"address": "נפאל", "name": "Abhinayak"}
3.5. תגובת JSON באמצעות מחרוזת פשוטה
אנחנו יכולים להשתמש מחרוזות מעוצבות מראש ליצירת תגובה, וניתן לעשות זאת בפשטות.
נקודת הסיום הבאה היא דוגמה לאופן שבו JSON מיוצג כ- חוּט ניתן לשלוח בחזרה בתור JSON בתגובת ג'רזי:
@GET @Path ("/ json") תגובה ציבורית getJsonResponse () {String message = "{\" שלום \ ": \" זוהי תגובת JSON \ "}"; להחזיר תגובה. סטטוס (Response.Status.OK). אחדות (הודעה). סוג (MediaType.APPLICATION_JSON). בניין (); }
ניתן לאמת זאת על ידי ביצוע HTTP GET באמצעות סִלְסוּל כדי לאמת את התגובה:
תלתל -XGET // localhost: 8080 / ג 'רזי / תגובה / json
קריאה למשאב זה תחזיר JSON:
{"שלום": "זוהי תגובת JSON"}
אותו דפוס חל גם על סוגי מדיה נפוצים אחרים כמו XML או HTML. עלינו רק להודיע לג'רזי שמדובר ב- XML או ב- HTML MediaType.TEXT_XML אוֹ MediaType.TEXT_HTML וג'רסי יטפל בשאר. במאמר מהיר זה, בנינו תגובות ג'רזי (JAX-RS) למגוון סוגי מדיה. ניתן למצוא את כל קטעי הקוד המוזכרים במאמר ב- GitHub.
4. מסקנה