הערות אינטרנט באביב

מאמר זה הוא חלק מסדרה: • הערות ליבת אביב

• הערות רשת אביבית (מאמר נוכחי) • הערות על אתחול האביב

• הערות על תזמון האביב

• הערות על נתוני אביב

• הערות שעועית אביבית

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

במדריך זה נחקור את ההערות של רשת האביב מה- org.springframework.web.bind.annotation חֲבִילָה.

2. @ בקשת מיפוי

פשוט שים, @ בקשת מיפוימסמן שיטות מטפלות בבקשות בְּתוֹך @בקר שיעורים; ניתן להגדיר אותו באמצעות:

  • נָתִיב, או כינויים שלה, שֵׁם, ו ערך: לאיזה URL השיטה ממופה
  • שיטה: שיטות HTTP תואמות
  • פאראמים: מסנן בקשות על בסיס נוכחות, היעדרות או ערך של פרמטרי HTTP
  • כותרות: מסנן בקשות על בסיס נוכחות, היעדרות או ערך של כותרות HTTP
  • צורכת: אילו סוגי מדיה השיטה יכולה לצרוך בגוף בקשת HTTP
  • מייצר: אילו סוגי מדיה השיטה יכולה לייצר בגוף התגובה HTTP

הנה דוגמה מהירה לאיך זה נראה:

מחלקה @ Controller VehicleController {@RequestMapping (value = "/ vehicles / home", method = RequestMethod.GET) מחרוזת הביתה () {return "home"; }}

אנחנו יכולים לספק הגדרות ברירת מחדל עבור כל שיטות המטפלים ב- @בקר מעמד אם אנו מיישמים את ההערה הזו ברמת הכיתה. היחיד יוצא מן הכלל הוא כתובת ה- URL אשר אביב לא תעקוף אותה עם הגדרות רמת שיטה אך מוסיף את שני חלקי הנתיב.

לדוגמה, לתצורה הבאה יש את אותה השפעה לזו שלמעלה:

@Controller @RequestMapping (value = "/ vehicles", method = RequestMethod.GET) class VehicleController {@RequestMapping ("/ home") מחרוזת הביתה () {להחזיר "הביתה"; }}

יתר על כך, @GetMapping, @ פוסט מיפוי, @ PutMapping, @DeleteMapping, ו @ תיקון מיפוי הם גרסאות שונות של @ בקשת מיפוי בשיטת HTTP שכבר הוגדרה כ- GET, POST, PUT, DELETE ו- PATCH בהתאמה.

אלה זמינים מאז שחרור האביב 4.3.

3. @ בקשת גוף

בוא נעבור ל @ בקשת גוף - הממפה את גוף בקשת ה- HTTP לאובייקט:

@PostMapping ("/ save") בטל saveVehicle (רכב רכב @RequestBody) {// ...}

עריקת הערעור היא אוטומטית ותלויה בסוג התוכן של הבקשה.

4. @ PathVariable

לאחר מכן, בואו נדבר על @ PathVariable.

ביאור זה מציין כי א ארגומנט השיטה קשור למשתנה של תבנית URI. אנו יכולים לציין את תבנית ה- URI עם ה- @ בקשת מיפוי ביאור וקשר טיעון שיטה לאחד מחלקי התבנית באמצעות @ PathVariable.

אנו יכולים להשיג זאת באמצעות שֵׁם או כינויו, ה ערך טַעֲנָה:

@RequestMapping ("/ {id}") getVehicle רכב (@PathVariable ("id") מזהה ארוך) {// ...}

אם שם החלק בתבנית תואם את שם ארגומנט השיטה, אנחנו לא צריכים לציין אותו בהערה:

@RequestMapping ("/ {id}") getVehicle רכב (מזהה ארוך @PathVariable) {// ...}

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

@RequestMapping ("/ {id}") getVehicle רכב (@PathVariable (חובה = שקר) מזהה ארוך) {// ...}

5. @RequestParam

אנו משתמשים @RequestParam ל גישה לפרמטרים של בקשת HTTP:

@RequestMapping רכב getVehicleByParam (@RequestParam ("id") מזהה ארוך) {// ...}

יש לו אותן אפשרויות תצורה כמו @ PathVariable ביאור.

בנוסף להגדרות אלה, עם @RequestParam אנו יכולים לציין ערך מוזרק כאשר אביב לא מוצא ערך או ריק בבקשה. כדי להשיג זאת, עלינו להגדיר את ערך ברירת מחדל טַעֲנָה.

מתן ערך ברירת מחדל מוגדר באופן מרומז נדרש ל שֶׁקֶר:

@RequestMapping ("/ buy") BuyCar לרכב (@RequestParam (defaultValue = "5") int seatCount) {// ...}

מלבד פרמטרים, יש לחלקים אחרים של בקשת HTTP אליהם אנו יכולים לגשת: עוגיות וכותרות. אנו יכולים לגשת אליהם באמצעות ההערות @CookieValue ו @RequestHeader בהתאמה.

אנו יכולים להגדיר אותם באותו אופן כמו @RequestParam.

6. הערות לטיפול בתגובות

בסעיפים הבאים נראה את ההערות הנפוצות ביותר לטיפול בתגובות HTTP באביב MVC.

6.1. @ResponseBody

אם אנו מסמנים שיטת מטפל בבקשות עם @ResponseBody,האביב מתייחס לתוצאת השיטה כתגובה עצמה:

@ResponseBody @RequestMapping ("/ שלום") מחרוזת שלום () {להחזיר "שלום עולם!"; }

אם נביא הערה א @בקר בכיתה עם הערה זו, כל שיטות המטפל בבקשות ישתמשו בה.

6.2. @ExceptionHandler

בהערה זו נוכל להכריז על א שיטת טיפול שגיאות בהתאמה אישית. Spring מכנה שיטה זו כאשר שיטת מטפל בבקשות מביאה את כל החריגים שצוינו.

ניתן להעביר את החריג שנתפס לשיטה כטיעון:

@ExceptionHandler (IllegalArgumentException.class) בטל ב- IllegalArgumentException (חריג IllegalArgumentException) {// ...}

6.3. @ תגובה סטטוס

אנחנו יכולים לציין את מצב HTTP הרצוי של התגובה אם נביא הערה לשיטת מטפל בבקשות. אנו יכולים להכריז על קוד הסטטוס באמצעות קוד הטיעון, או הכינוי שלו, ה ערך טַעֲנָה.

כמו כן, אנו יכולים לספק סיבה באמצעות ה- סיבה טַעֲנָה.

אנחנו גם יכולים להשתמש בו יחד עם @ExceptionHandler:

@ExceptionHandler (IllegalArgumentException.class) @ResponseStatus (HttpStatus.BAD_REQUEST) בטל ב- IllegalArgumentException (חריג IllegalArgumentException) {// ...}

למידע נוסף אודות מצב תגובת HTTP, אנא בקר במאמר זה.

7. הערות אינטרנט אחרות

הערות מסוימות אינן מנהלות ישירות בקשות HTTP או תגובות. בחלקים הבאים נציג את הנפוצים ביותר.

7.1. @בקר

אנו יכולים להגדיר בקר MVC של Spring @בקר. למידע נוסף, בקרו במאמר שלנו על הערות שעועית באביב.

7.2. @ RestController

ה @ RestControllerמשלב @בקר ו @ResponseBody.

לכן ההצהרות הבאות שוות ערך:

@Controller @ResponseBody מחלקה VehicleRestController {// ...}
@RestController מחלקה VehicleRestController {// ...}

7.3. @ModelAttribute

עם ההערה הזו אנחנו יכולים אלמנטים גישה שכבר נמצאים במודל של MVC @בקר, על ידי אספקת מפתח הדגם:

@PostMapping ("/ assemble") void assembleVehicle (@ModelAttribute ("רכב") רכב רכבInModel) {// ...}

כמו עם @ PathVariable ו @RequestParam, איננו צריכים לציין את מפתח המודל אם לארגומנט יש אותו שם:

@PostMapping ("/ להרכיב") void assembleVehicle (רכב רכב @ModelAttribute) {// ...}

חוץ מזה, @ModelAttribute יש שימוש אחר: אם אנו מציינים שיטה באמצעותה, אביב יהיה להוסיף באופן אוטומטי את ערך ההחזרה של השיטה למודל:

@ModelAttribute ("רכב") getVehicle רכב () {// ...}

כמו בעבר, איננו צריכים לציין את מפתח הדגם, Spring משתמש כברירת מחדל בשם השיטה:

@ModelAttribute רכב רכב () {// ...}

לפני שאביב קורא לשיטת מטפל בבקשות, הוא קורא לכל @ModelAttribute שיטות ביאורים בכיתה.

מידע נוסף אודות @ModelAttribute ניתן למצוא במאמר זה.

7.4. @ CrossOrigin

@ CrossOriginמאפשר תקשורת בין תחומים לשיטות המטפל בבקשות המאושרות:

@CrossOrigin @RequestMapping ("/ שלום") מחרוזת שלום () {להחזיר "שלום עולם!"; }

אם אנו מסמנים כיתה איתו, זה חל על כל שיטות מטפל הבקשות בו.

אנו יכולים לכוון את התנהגות ה- CORS בטיעוני ההערה הזו.

לפרטים נוספים אנא בקרו במאמר זה.

8. מסקנה

במאמר זה ראינו כיצד אנו יכולים לטפל בבקשות ותגובות HTTP באמצעות Spring MVC.

כרגיל, הדוגמאות זמינות ב- GitHub.

הַבָּא » הערות על מגפי האביב « הערות ליבת אביב קודמות