即使我使用 API Post 请求发送数据,为啥 req 正文是 [重复]

Posted

技术标签:

【中文标题】即使我使用 API Post 请求发送数据,为啥 req 正文是 [重复]【英文标题】:Why req body is even though I send the data with API Post request [duplicate]即使我使用 API Post 请求发送数据,为什么 req 正文是 [重复] 【发布时间】:2021-10-11 00:40:14 【问题描述】:

我正在创建自己的 API(使用 express)和 react.js 应用程序。但是,当我从反应应用程序发送数据时,服务器不会检索它。这是我的代码:

POST 请求客户端:

async function sendRequest(text) 

    const url = "http://localhost:51515/initialize"
    const settings = 
        method: "POST",
        body: 
            text: text
        
    
        
    try 
        const response = await fetch(url, settings)
        return await response.json()
     catch(err) 
        console.log(err)
    

服务器端 POST 请求检索:

const express = require("express");
const app = express();
const PORT = 51515

app.use(express.json())

app.listen(
    PORT,
    () => console.log(`API initialized on http://localhost:$PORT`)
)

app.post('/initialize', (req,res) => 
    console.log(req.body) // The log output is 
)

你知道我该如何解决这个问题吗?

【问题讨论】:

也许您没有发送 JSON - 尝试使用 express.text() 正文解析器 - 或者,当然,发送 JSON 哦,我明白了......你需要body: JSON.stringify( text: text )(或者如果你愿意,只需body: JSON.stringify( text ) 好吧仍然没有任何价值,它没有改变任何东西。 你没有告诉服务器你正在发送 JSON ...headers: "Content-Type": "application/json" - 它在下面的答案中 【参考方案1】:

您只需将这些参数添加到您的设置对象中。

const settings = 
    method: "POST",
    body: JSON.stringify(
        text: text
    ),
    headers:  "Content-Type": "application/json" 

【讨论】:

做到了,但现在它给出了这个错误: Origin localhost:3000 is not allowed by Access-Control-Allow-Origin. Efe,您的 Express api 和 React 应用程序不在同一台服务器上提供服务。您可以使用 Cors 轻松解决此问题。只需“npm install cors”到您的后端服务器,然后“const cors = require('cors')”和“app.use(cors())”即可。 没什么:)

以上是关于即使我使用 API Post 请求发送数据,为啥 req 正文是 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥即使我们尝试获取数据而不是更新/提交新数据,GraphQL 也会查询 POST 请求?

为啥我的rest api post请求不能将我的数组保存在我的mongodb数据库中

如何断言应用程序使用 POST 请求向 API 服务器发送正确的数据

NSURLSession 发送 GET 请求,即使我在 HTTPMethod 中设置了 POST

为啥我的后端中的 axios 发布请求没有将任何数据发送回我的外部 api? -

为啥nodejs express post请求中的“body”为空?