Loading...
Spring Framework Reference Documentation 7.0.2의 @RequestBody의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
@RequestBody@RequestBody 어노테이션을 사용하여 요청 본문을 읽고
HttpMessageReader를 통해 객체로 역직렬화할 수 있습니다.
다음 예제는 @RequestBody 인자를 사용합니다:
1@PostMapping("/accounts") 2public void handle(@RequestBody Account account) { 3 // ... 4}
1@PostMapping("/accounts") 2fun handle(@RequestBody account: Account) { 3 // ... 4}
Spring MVC와는 달리 WebFlux에서 @RequestBody 메서드 인자는 리액티브 타입을 지원하며
완전히 논블로킹인 읽기 및 (클라이언트-투-서버) 스트리밍을 지원합니다.
1@PostMapping("/accounts") 2public void handle(@RequestBody Mono<Account> account) { 3 // ... 4}
1@PostMapping("/accounts") 2fun handle(@RequestBody accounts: Flow<Account>) { 3 // ... 4}
WebFlux Config의 HTTP message codecs 옵션을 사용하여 메시지 리더를 설정하거나 커스터마이즈할 수 있습니다.
@RequestBody를 jakarta.validation.Valid 또는 Spring의
@Validated 어노테이션과 함께 사용할 수 있으며, 이는 표준 빈 검증이 적용되도록 합니다.
검증 오류는 WebExchangeBindException을 발생시키며, 이는 400 (BAD_REQUEST) 응답을 발생시킵니다.
예외에는 오류 상세 정보가 담긴 BindingResult가 포함되며,
비동기 래퍼와 함께 인자를 선언한 다음 오류 관련 오퍼레이터를 사용하여
컨트롤러 메서드에서 처리할 수 있습니다:
1@PostMapping("/accounts") 2public void handle(@Valid @RequestBody Mono<Account> account) { 3 // use one of the onError* operators... 4}
1@PostMapping("/accounts") 2fun handle(@Valid @RequestBody account: Mono<Account>) { 3 // ... 4}
또한 검증 오류에 접근하기 위해 Errors 파라미터를 선언할 수도 있지만,
그 경우 요청 본문은 Mono가 아니어야 하며, 먼저 resolve됩니다:
1@PostMapping("/accounts") 2public void handle(@Valid @RequestBody Account account, Errors errors) { 3 // use one of the onError* operators... 4}
1@PostMapping("/accounts") 2fun handle(@Valid @RequestBody account: Mono<Account>) { 3 // ... 4}
다른 파라미터에 @Constraint 어노테이션이 있어 메서드 검증이 적용되는 경우에는
대신 HandlerMethodValidationException이 발생합니다.
자세한 내용은 검증 섹션을 참조하세요.
Multipart Content
HttpEntity