2017-09-13 11 views
0

선택적 요청 본문을 사용하는 인터페이스를 정의하는 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)의 구현이 버그가 있습니까? 아니면 내가 뭘 잘못하고 있습니까?

답변

0

@Test 파일을 보내는 동안 요청시 Content-Type"application/json"으로 설정해야합니다.