선택적 요청 본문을 사용하는 인터페이스를 정의하는 REST 컨트롤러가 있습니다.415 지원되지 않는 미디어 유형, POST 요청으로 선택적 요청 본문을 보내지 않을 때
@RestController
@RequestMapping(ExampleRest.EXAMPLE_URI)
public class ExampleRest {
public static final String EXAMPLE_URI = "/examples";
@RequestMapping(value = "/search", method = POST)
public Page<ExampleDto> search(@RequestBody(required = false) Searchable searchable, Pageable pageable) {
return exampleService.findAll(searchable, pageable);
}
}
Searchable
객체는 JPASpecification
을 만들 수있는 정보가 포함되어 있습니다. 꽤 많이 dto
입니다. 이 옵션을 검색 가능하게 만들고 싶습니다. @RequestBody(required = false)
이 트릭을해야한다는 것을 이해했습니다.
요청 본문없이 요청을 테스트하려는 다음 테스트가 있습니다.
< 415 지원되지 않는 미디어 유형, UNKNOWN 인스턴스를 포함하는 1 페이지 1 {의 Content-Type = [:이 검사를 실행할 경우
@Test public void post_NoCriteria_Ok() { RequestEntity requestEntity = new RequestEntity(HttpMethod.POST, URI.create(ExampleRest.EXAMPLE_URI + "/search")); ResponseEntity <RestResponsePage<ExampleDto>> response = restTemplate.exchange(requestEntity, new ParameterizedTypeReference <RestResponsePage<ExampleDto>>() {}); Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); }
, 그것은
RestController
에서이 응답 실패 유지 애플리케이션/JSON; 문자셋 = UTF-8] 전송 인코딩은 = [청크, 날짜 = 2017년 9월 13일 (수)는 그리니치 표준시 10시 10분 22초]}>
규범 실행에도 들어 가지 않는다 search
메서드 구현 내에서 RestController
.
시험을 위해 빈 Searchable
을 제공하는 즉시 실행됩니다.
@RequestBody(required = false)
의 구현이 버그가 있습니까? 아니면 내가 뭘 잘못하고 있습니까?