Vrátenie vlastných stavových kódov z regulátorov pružiny

1. Prehľad

Tento rýchly článok predvedie niekoľko spôsobov, ako vrátiť vlastné stavové kódy HTTP z radičov Spring MVC.

To je často dôležité, aby bolo možné jasnejšie vyjadriť výsledok požiadavky klientovi a využiť úplnú sémantiku protokolu HTTP. Napríklad ak sa s požiadavkou niečo pokazí, odoslanie konkrétneho chybového kódu pre každý typ možného problému by klientovi umožnilo zobraziť používateľovi príslušné chybové hlásenie.

Nastavenie základného projektu Spring MVC je mimo rozsahu tohto článku, ale ďalšie informácie nájdete tu.

2. Vrátenie vlastných stavových kódov

Jar poskytuje niekoľko primárnych spôsobov, ako z neho vrátiť vlastné stavové kódy Kontrolór triedy:

  • pomocou a ResponseEntity
  • pomocou @ResponseStatus - poznámku o triedach výnimiek a -
  • pomocou @ControllerAdvice a @ExceptionHandler anotácie.

Tieto možnosti sa navzájom nevylučujú; ďaleko od toho, môžu sa skutočne navzájom dopĺňať.

Tento článok sa bude zaoberať prvými dvoma spôsobmi (ResponseEntity a @ResponseStatus). Ak sa chcete dozvedieť viac o používaní @ControllerAdvice a @ExceptionHandler, dočítate sa o tom tu.

2.1. Vrátenie stavových kódov prostredníctvom a ResponseEntity

V štandardnom radiči Spring MVC definujeme jednoduché mapovanie:

@RequestMapping (value = "/ controller", method = RequestMethod.GET) @ResponseBody public ResponseEntity sendViaResponseEntity () {return new ResponseEntity (HttpStatus.NOT_ACCEPTABLE); }

Po prijatí žiadosti GET „/ kontrolór“, Spring vráti odpoveď s kódom 406 (neprijateľné). Pre tento príklad sme ľubovoľne vybrali konkrétny kód odpovede. Môžete vrátiť akýkoľvek stavový kód HTTP (celý zoznam nájdete tu).

2.2. Vrátenie stavových kódov pomocou výnimky

Do ovládača pridáme druhú metódu, ktorá demonštruje, ako používať Výnimka vrátiť stavový kód:

@RequestMapping (hodnota = "/ výnimka", metóda = RequestMethod.GET) @ResponseBody public ResponseEntity sendViaException () {throw new ForbiddenException (); }

Po prijatí žiadosti GET „/ výnimka“, Jar bude hádzať a Zakázaná výnimka. Toto je vlastná výnimka, ktorú definujeme v samostatnej triede:

@ResponseStatus (HttpStatus.FORBIDDEN) verejná trieda ForbiddenException rozširuje RuntimeException {}

V tejto výnimke sa nevyžaduje žiadny kód. Všetku prácu vykonáva @ResponseStatus anotácia.

V tomto prípade, keď je vyvolaná výnimka, kontrolór, ktorý ju vyhodil, vráti odpoveď s kódom odpovede 403 (zakázané). V prípade potreby môžete do poznámky pridať správu, ktorá sa vráti spolu s odpoveďou.

V takom prípade by trieda vyzerala takto:

@ResponseStatus (value = HttpStatus.FORBIDDEN, reason = "Ukázať príklad vlastnej správy") verejná trieda ForbiddenException rozširuje RuntimeException {}

Je dôležité si uvedomiť, že hoci je technicky možné, aby výnimka vrátila akýkoľvek stavový kód, vo väčšine prípadov má logické použitie výnimiek iba chybové kódy (4XX a 5XX).

3. Záver

Výukový program ukázal, ako vrátiť vlastné stavové kódy z radičov Spring MVC.

Implementáciu nájdete v príklade projektu GitHub.


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