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,{內容類型= [:
@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秒GMT]}>
代碼執行甚至不進入在RestController
內執行方法。
儘快爲測試提供一個空的Searchable
,它貫穿始終。
是否執行@RequestBody(required = false)
越野車,或者我在這裏做錯了什麼?