![](/img/trans.png)
[英]org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing
[英]SpringBoot Required request body is missing from browser
我有一個使用springboot的POST請求,當我在郵遞員上進行測試時一切正常,但是當我從瀏覽器嘗試時,我得到了這個錯誤,
已解決 [org.springframework.http.converter.HttpMessageNotReadableException:缺少所需的請求正文:公共 org.springframework。
這是我的代碼。
服務類
@Transactional(rollbackFor = {SQLException.class})
public ResponseEntity<Message> save(Cursos cursos) {
Optional<Cursos> optionalCursos = cursosRepository.findByTituloCursos(cursos.getTituloCursos());
if (optionalCursos.isPresent()) {
return new ResponseEntity<>(new Message("la entrada ya existe", null), HttpStatus.BAD_REQUEST);
}
return new ResponseEntity<>(new Message("ok", false, cursosRepository.saveAndFlush(cursos)), HttpStatus.OK);
}
DTO 類
public class CursosDTO {
long id;
@NotNull
String tituloCursos;
@NotNull
String cuerpocursos;
public CursosDTO() {
}
public CursosDTO(long id, String tituloCursos, String cuerpocursos) {
this.id = id;
this.tituloCursos = tituloCursos;
this.cuerpocursos = cuerpocursos;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getTituloCursos() {
return tituloCursos;
}
public void setTituloCursos(String tituloCursos) {
this.tituloCursos = tituloCursos;
}
public String getCuerpocursos() {
return cuerpocursos;
}
public void setCuerpocursos(String cuerpocursos) {
this.cuerpocursos = cuerpocursos;
}
}
控制器類
@PostMapping("/")
public ResponseEntity<Message> save(@RequestBody CursosDTO cursosDTO) {
Cursos saveCursos = new Cursos(cursosDTO.getTituloCursos(), cursosDTO.getCuerpocursos());
return cursosService.save(saveCursos);
}
這是我的 JavaScript 代碼
fetch(url)
.then((response) => response.json())
.then((data) => {
console.log(data);
let dataUpd = {
tituloCursos: titulo,
cuerpocursos: contenido
};
console.log(JSON.stringify(dataUpd) + " prueba");
fetch(url, {
method: "POST",
BODY: dataUpd,
headers: {
"Content-Type": "application/json",
},
})
.then((res) => res.json())
.catch((error) => console.error("error al subir datos: ", error))
.then((response) => {
console.log("Datos subidos: ", response);
})
})
當我獲取數據時,它會正確地將存儲在數據庫中的所有數據帶入,這是我試圖存儲的信息
{"tituloCursos":"Stack","cuerpocursos":"<p>Overflown</p>"}
以防萬一我使用邊緣瀏覽器和我嘗試使用tinymce從富文本編輯器存儲信息
可能是一個非常簡單的錯字。 您在 Post requests js 代碼中將BODY
大寫。 它必須是小寫的: body
請參閱: https ://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#supplying_request_options
此外,您需要 JSON.stringify 您的數據,以便 Post 請求的請求選項如下所示:
method: "POST",
body: JSON.stringify(dataUpd),
headers: {
"Content-Type": "application/json",
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.