從技術上講,這應該是一項簡單的任務,但我找不到錯誤。
我想寫一個普通的“POST方法”,但是當我測驗它時,它遇到了一個問題: enter code here Status expected:<201> but what:<200>.
我的問題是,為什么我得到一個 OK 而不是一個 CREATED?
代碼:
控制器中的 PostMapping
@PostMapping
public Optional<ADto> createA(@RequestBody ADto a){
return Optional.ofNullable(a);
}
單元測驗
@Test
void verifyPostA() throws Exception {
var a = new ADto(1L, "a");
var aText = objectMapper.writeValueAsString(a);
mockMvc.perform(
MockMvcRequestBuilders.post("/as")
.content(aText)
.contentType(MediaType.APPLICATION_JSON)
)
.andDo(print())
.andExpect(status().isCreated())
.andExpect(jsonPath("$.id").value("1"));
}
uj5u.com熱心網友回復:
因為對于一個執行成功不回傳的控制器方法,ResponseEntity默認回應碼是200。
@ResponseStatus要為這種情況配置回應代碼,您可以簡單地在該控制器方法上進行注釋:
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public Optional<ADto> createA(@RequestBody ADto a){
return Optional.ofNullable(a);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/411309.html
標籤:
上一篇:如何將顏色屬性更改為黑底白字
