簡體   English   中英

瀏覽器中缺少 SpringBoot 所需的請求正文

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM