即使我使用 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