최신 Spring v4에서 옵션 본문과 함께 @RequestBody 사용
사용할 때 REST API 호출에서 본문을 선택적으로 설정하려면 어떻게 합니까?@RequestBody
봄에 주석을 달기?
Spring의 최신 버전과 함께, 만약 당신이@RequestBody
주석을 사용하면 클라이언트가 선택 사항으로 만들지 않고 항상 본문을 전송할 수 있습니다.
나는 노력했다.@RequestBody (required=false)
하지만 그것은 효과가 없었고 여전히 제 요청은 무효로 처리됩니다.
본문을 의무화하지 않고 요청을 적절한 필수 개체로 변환하려면 어떻게 해야 합니까?
예:
@RequestMapping(value="/add/employee", method=RequestMethod.POST)
public void addEmployee(@RequestBody Employee employee){
// ...
}
여기서는 본문 없이 POST를 사용하는 직원을 추가하고 싶습니다.그걸 어떻게 하는 거죠?Spring 최신 버전에서 빈 본문을 보내면 "body missing" 오류가 발생합니다.
@산토시, 어떤 주장을 해야 하는지 잘 모르겠습니다.마이크는 이미 그가 사용하려고 시도했다고 언급했습니다.@RequestBody (required=false)
그리고 요청은 여전히 무효였습니다.아마도 당신은 더 자세히 설명하고 예를 들어줄 수 있어요.
@마이크, 아마도 당신의 목적에 맞는 별도의 컨버터를 사용해 볼 수 있을 것입니다.
참고: Spring v4.1.6과 Mike가 최신 버전을 사용하고 있다고 언급한 것과 같은 문제를 발견했습니다.
버전에 문제가 있어서 3.2 이상의 스프링 버전을 사용하시는 것 같습니다.@RequestBody에 필수 매개 변수가 있어야 요청 본문을 선택할 수 있습니다.
다음 링크 Spring @RequestBody 주석 요청
@RequestBody
기본적으로 참인 본문 및 인수가 필요합니다.false로 지정하면 도움이 됩니다.
공개 추상 부울이 필요합니다.
본문 내용이 필요한지 여부입니다.기본값은 true이며 본문 내용이 없는 경우 예외가 발생합니다.본문 내용이 null일 때 null을 전달하려면 false로 전환합니다.
사용할 수 있습니다.java.util.Optional
:
@RequestMapping(value="/add/employee", method=RequestMethod.POST)
public void addEmployee(@RequestBody Optional<Employee> employee){
// ...
}
엔티티로 표시된 Customer라는 클래스로 역직렬화하려는 비슷한 문제가 있었습니다.다른 엔티티를 가리키는 필드가 포함되어 있었기 때문입니다.
@Entity
public class Customer {
// ...
@OneToMany(mappedBy = "customer", cascade = CascadeType.ALL)
@JsonManagedReference
private List<Order> orders;
}
다음 끝점에 도달하려고 할 때 애플리케이션/json이 지원되지 않는다는 415 오류가 계속 발생했습니다.
@RestController
@RequestMapping("api/v1/customer")
public class Customer {
// ...
@PostMapping
public void addNewCustomer(@RequestBody Customer cust) {
customerService.createCustomer(cust);
}
}
다음 작업으로 교체:
record NewCustomerRequest(String name) {}
@PostMapping
public void addNewCustomer(@RequestBody NewCustomerRequest request) {
Customer cust = Customer.builder()
.name(request.name())
.build();
customerService.createCustomer(cust);
}
언급URL : https://stackoverflow.com/questions/28687616/use-requestbody-with-optional-body-in-latest-spring-v4
'prosource' 카테고리의 다른 글
Uncaught TypeError: 정의되지 않은 'top' 속성을 읽을 수 없습니다. (0) | 2023.08.06 |
---|---|
활동 컨텍스트 또는 응용 프로그램 컨텍스트를 호출해야 하는 경우 (0) | 2023.08.06 |
Node.js 응용 프로그램을 자체 프로세스로 실행하려면 어떻게 해야 합니까? (0) | 2023.08.06 |
Powershell에서 프롬프트에 자동으로 "예"라고 대답하려면 어떻게 해야 합니까? (0) | 2023.08.06 |
Android 장치에서 데이터/데이터 폴더에 액세스하는 방법은 무엇입니까? (0) | 2023.08.06 |