首页 > 解决方案 > React.js:从JavaSpring-boot后端获取POSTMapping发送请求,但什么也不做

问题描述

我正在创建一个由 React-js 前端、Java Spring-Boot 后端和 SQL 数据库组成的全栈项目。我设置了一组简单的类/接口/控制器,用于获取数据库中的对象列表,以及创建/删除/修改单个对象。

在连接数据库和后端并确认所有控制器请求都正常运行后,我尝试在前端使用它们。GET 请求一切正常,但尝试使用任何需要传递请求正文的请求似乎都不起作用。以下是它是如何下降的:

图 1

首先,这是后端的 POSTMapping 请求。我正在使用 Autowired 处理这些请求。

const createNewIS = (e) => {
    return fetch("http://localhost:8080/ideas/create", {
        method: 'POST',
        crossDomain: true,
        headers: {
          'Accept': 'nology-brainstorm/json',
          'Content-Type': 'nology-brainstorm/json',
          'API-Key': 'secret'
        },
        body: JSON.stringify({
            "spaceid": 4,
            "name": newISName,
            "description": newISDesc
        })
    }).then((nothing) => {
        updateNewISPopUp(e);
    })
}

其次,这是前端的抓取功能。我尝试在没有 API-Key 标头的情况下运行此函数,没有 .then() 继续第一个子句,也没有将类的键名封装在语音标记中。这些似乎都没有任何效果,结果总是如下:

图 2(浏览器控制台)

请求似乎已经发出,body 似乎已经成功通过。但是,当我检查存储其检索对象的数据库或前端中的状态时,新对象不会添加到其中。抱歉,如果解决方案在这里很明显,但是有人知道为什么请求没有正常运行吗?我一直在看这个几个小时没有运气。

标签: javareactjsspring-boot

解决方案


415 是不支持的媒体类型。这通常与您的 Content-Type 有关

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415

您正在传递自定义内容类型,因此您还需要在后端控制器上定义它。

@PostMapping(path = "users", 
        consumes = "nology-brainstorm/json", 
        produces = "nology-brainstorm/json")

推荐阅读