Vårnettkommentarer

Denne artikkelen er en del av en serie: • Spring Core Annotations

• 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

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