החזרת קודי סטטוס מותאמים אישית מבקרי האביב

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

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

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

ההתקנה של פרויקט MVC בסיסי של אביב היא מחוץ לתחום מאמר זה, אך תוכל למצוא מידע נוסף כאן.

2. החזרת קודי סטטוס מותאמים אישית

Spring מספק כמה דרכים עיקריות להחזרת קודי סטטוס מותאמים אישית ממנה בקר שיעורים:

  • באמצעות א תגובה תגובה
  • משתמש ב @ תגובה סטטוס ביאור על שיעורי חריגים, וכן
  • משתמש ב @ControllerAdvice ו @ExceptionHandler ביאורים.

אפשרויות אלה אינן בלעדיות זו לזו; רחוק מכך, הם יכולים למעשה להשלים זה את זה.

מאמר זה יסקור את שתי הדרכים הראשונות (תגובה תגובה ו @ תגובה סטטוס). אם תרצה ללמוד עוד על השימוש @ControllerAdvice ו @ExceptionHandler, תוכלו לקרוא על כך כאן.

2.1. החזרת קודי סטטוס דרך א תגובה תגובה

בבקר Spring MVC סטנדרטי נגדיר מיפוי פשוט:

@RequestMapping (value = "/ controller", method = RequestMethod.GET) @ResponseBody Public ResponseEntity sendViaResponseEntity () {להחזיר ResponseEntity חדש (HttpStatus.NOT_ACCEPTABLE); }

עם קבלת בקשת GET ל- "/בקר", אביב יחזיר תגובה עם קוד 406 (לא מקובל). בחרנו באופן שרירותי את קוד התגובה הספציפי לדוגמא זו. ניתן להחזיר כל קוד סטטוס HTTP (הרשימה המלאה תמצאו כאן).

2.2. החזרת קודי סטטוס באמצעות חריג

נוסיף שיטה שנייה לבקר כדי להדגים כיצד להשתמש ב- יוצא מן הכלל להחזרת קוד סטטוס:

@RequestMapping (value = "/ exception", method = RequestMethod.GET) @ResponseBody Public ResponseEntity sendViaException () {זרוק חדש ForbiddenException (); }

עם קבלת בקשת GET ל- "/יוצא מן הכלל", האביב יזרוק א חריג אסור. זהו חריג מותאם אישית אותו נגדיר במחלקה נפרדת:

@ResponseStatus (HttpStatus.FORBIDDEN) מחלקה ציבורית ForbiddenException מרחיב RuntimeException {}

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

במקרה זה, כאשר החריג נזרק, הבקר שזרק אותו מחזיר תגובה עם קוד התגובה 403 (אסור). במידת הצורך, תוכל גם להוסיף הודעה בהערה שתוחזר יחד עם התגובה.

במקרה זה, הכיתה תיראה כך:

@ResponseStatus (value = HttpStatus.FORBIDDEN, סיבה = "כדי להציג דוגמה להודעה מותאמת אישית") מחלקה ציבורית ForbiddenException מרחיבה RuntimeException {}

חשוב לציין שלמרות שטכנית אפשר לבצע חריג להחזיר כל קוד סטטוס, ברוב המקרים זה הגיוני רק להשתמש בחריגים עבור קודי שגיאה (4XX ו- 5XX).

3. מסקנה

המדריך הראה כיצד להחזיר קודי סטטוס מותאמים אישית מבקרי Spring MVC.

את היישום ניתן למצוא בפרויקט GitHub לדוגמא.


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