Vårnettkommentarer
• Vårkommentarer (nåværende artikkel) • Kommentarer om vårstøvler
• Kommentarer om vårplanlegging
• Vårdataanmerkninger
• Kommentarer om vårbønner
1. Oversikt
I denne opplæringen vil vi utforske vårnettkommentarer fra org.springframework.web.bind.annotation pakke.
2. @RequestMapping
For å si det enkelt, @RequestMappingmerker metoder for forespørselshåndtering innsiden @Kontrollør klasser; den kan konfigureres ved hjelp av:
- sti, eller dets aliaser, Navn, og verdi: hvilken URL metoden er kartlagt til
- metode: kompatible HTTP-metoder
- params: filtrerer forespørsler basert på tilstedeværelse, fravær eller verdi av HTTP-parametere
- overskrifter: filtrerer forespørsler basert på tilstedeværelse, fravær eller verdi av HTTP-overskrifter
- forbruker: hvilke medietyper metoden kan konsumere i HTTP-forespørselens kropp
- produserer: hvilke medietyper metoden kan produsere i HTTP-responsorganet
Her er et raskt eksempel på hvordan det ser ut:
@Controller klasse VehicleController {@RequestMapping (verdi = "/ kjøretøy / hjem", metode = RequestMethod.GET) String hjem () {return "hjem"; }}
Vi kan tilby standardinnstillinger for alle behandlingsmetoder i a @Kontrollør klasse hvis vi bruker denne merknaden på klassenivå. Den eneste unntak er URL-en som Spring ikke overstyrer med metodenivåinnstillinger, men legger til de to banedelene.
For eksempel har følgende konfigurasjon samme effekt som den ovenfor:
@Controller @RequestMapping (verdi = "/ kjøretøy", metode = RequestMethod.GET) klasse VehicleController {@RequestMapping ("/ home") String home () {return "home"; }}
Videre @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, og @PatchMapping er forskjellige varianter av @RequestMapping med HTTP-metoden som allerede er satt til henholdsvis GET, POST, PUT, DELETE og PATCH.
Disse er tilgjengelige siden utgivelsen av våren 4.3.
3. @Fotball
La oss gå videre til @Fotball - som kartlegger kroppen til HTTP-forespørselen til et objekt:
@PostMapping ("/ save") void saveVehicle (@RequestBody Vehicle vehicle) {// ...}
Deserialiseringen er automatisk og avhenger av innholdstypen på forespørselen.
4. @PathVariable
La oss snakke om @PathVariable.
Denne merknaden indikerer at a metode argument er bundet til en URI malvariabel. Vi kan spesifisere URI-malen med @RequestMapping kommentar og bind et metodeargument til en av maldelene med @PathVariable.
Vi kan oppnå dette med Navn eller dets alias, den verdi argument:
@RequestMapping ("/ {id}") Vehicle getVehicle (@PathVariable ("id") lang id) {// ...}
Hvis navnet på delen i malen samsvarer med navnet på metodeargumentet, trenger vi ikke å spesifisere det i kommentaren:
@RequestMapping ("/ {id}") Vehicle getVehicle (@PathVariable long id) {// ...}
Videre kan vi markere en stivariabel valgfri ved å sette argumentet kreves til falsk:
@RequestMapping ("/ {id}") GetVehicle for kjøretøy (@PathVariable (obligatorisk = falsk) lang id) {// ...}
5. @RequestParam
Vi bruker @RequestParam til tilgang til parametere for HTTP-forespørsel:
@RequestMapping Vehicle getVehicleByParam (@RequestParam ("id") lang id) {// ...}
Den har de samme konfigurasjonsalternativene som @PathVariable kommentar.
I tillegg til disse innstillingene, med @RequestParam Vi kan spesifisere en injisert verdi når Spring ikke finner noen eller tom verdi i forespørselen. For å oppnå dette må vi sette standardverdi argument.
Oppgi en standardverdi angir implisitt kreves til falsk:
@RequestMapping ("/ buy") Car buyCar (@RequestParam (defaultValue = "5") int seatCount) {// ...}
Foruten parametere er det andre HTTP-forespørselsdeler vi har tilgang til: informasjonskapsler og overskrifter. Vi kan få tilgang til dem med kommentarene @CookieValue og @RequestHeader henholdsvis.
Vi kan konfigurere dem på samme måte som @RequestParam.
6. Svarhåndteringskommentarer
I de neste avsnittene vil vi se de vanligste merknadene for å manipulere HTTP-svar i Spring MVC.
6.1. @ResponseBody
Hvis vi merker en forespørselhåndteringsmetode med @ResponseBody,Våren behandler resultatet av metoden som selve responsen:
@ResponseBody @RequestMapping ("/ hallo") String hei () {return "Hello World!"; }
Hvis vi kommenterer a @Kontrollør klasse med denne merknaden, vil alle metodene for forespørselbehandler bruke den.
6.2. @ExceptionHandler
Med denne kommentaren kan vi erklære a tilpasset feilhåndteringsmetode. Spring kaller denne metoden når en forespørselshåndteringsmetode kaster et av de angitte unntakene.
Det fangede unntaket kan overføres til metoden som et argument:
@ExceptionHandler (IllegalArgumentException.class) ugyldig påIllegalArgumentException (IllegalArgumentException unntak) {// ...}
6.3. @ResponseStatus
Vi kan spesifisere ønsket HTTP-status for svaret hvis vi kommenterer en forespørselshåndteringsmetode med denne merknaden. Vi kan erklære statuskoden med kode argumentet, eller dets alias, verdi argument.
Vi kan også gi en grunn til å bruke grunnen til argument.
Vi kan også bruke den sammen med @ExceptionHandler:
@ExceptionHandler (IllegalArgumentException.class) @ResponseStatus (HttpStatus.BAD_REQUEST) ugyldig påIllegalArgumentException (IllegalArgumentException unntak) {// ...}
For mer informasjon om HTTP-svarstatus, vennligst besøk denne artikkelen.
7. Andre nettkommentarer
Noen merknader håndterer ikke HTTP-forespørsler eller svar direkte. I de neste avsnittene vil vi introdusere de vanligste.
7.1. @Kontrollør
Vi kan definere en Spring MVC-kontroller med @Kontrollør. For mer informasjon, vennligst besøk vår artikkel om Spring Bean Annotations.
7.2. @RestController
De @RestControllerskurtreskere @Kontrollør og @ResponseBody.
Derfor er følgende erklæringer ekvivalente:
@Controller @ResponseBody klasse VehicleRestController {// ...}
@RestController klasse VehicleRestController {// ...}
7.3. @ModelAttribute
Med denne kommentaren kan vi tilgangselementer som allerede er i modellen av en MVC @Kontroll, ved å oppgi modellnøkkelen:
@PostMapping ("/ assemble") void assembleVehicle (@ModelAttribute ("vehicle") Vehicle vehicleInModel) {// ...}
Som med @PathVariable og @RequestParam, vi trenger ikke å spesifisere modellnøkkelen hvis argumentet har samme navn:
@PostMapping ("/ assemble") void assembleVehicle (@ModelAttribute Vehicle vehicle) {// ...}
I tillegg, @ModelAttribute har en annen bruk: hvis vi kommenterer en metode med den, vil Spring automatisk legge til metodens returverdi i modellen:
@ModelAttribute ("vehicle") Vehicle getVehicle () {// ...}
Som før trenger vi ikke å spesifisere modellnøkkelen, Spring bruker metodens navn som standard:
@ModelAttribute Kjøretøybil () {// ...}
Før Spring kaller en forespørselshåndteringsmetode, påkaller den alt @ModelAttribute kommenterte metoder i klassen.
Mer informasjon om @ModelAttribute finner du i denne artikkelen.
7.4. @CrossOrigin
@CrossOriginmuliggjør kommunikasjon på tvers av domener for de merkede metodene for forespørselshåndtering:
@CrossOrigin @RequestMapping ("/ hallo") String hei () {return "Hello World!"; }
Hvis vi merker en klasse med den, gjelder den alle metoder for forespørselshåndtering.
Vi kan finjustere CORS-oppførsel med denne kommentarens argumenter.
For mer informasjon, besøk denne artikkelen.
8. Konklusjon
I denne artikkelen så vi hvordan vi kan håndtere HTTP-forespørsler og svar med Spring MVC.
Som vanlig er eksemplene tilgjengelige på GitHub.
Neste » Kommentarer om vårstøvler « Forrige vårkommentarer