当我使用 fetch post 发布数据时,我没有收到数据
Posted
技术标签:
【中文标题】当我使用 fetch post 发布数据时,我没有收到数据【英文标题】:When I post data with fetch post, I don't receive data 【发布时间】:2022-01-23 18:51:00 【问题描述】:我在获取帖子时遇到问题,我想将数据发送到一个 url 但它不起作用..
function TodoTaskForm ()
const taskContentInput = useRef(null)
const handleSubmit = async (e) =>
e.preventDefault()
fetch('/api/tasks',
method: 'POST',
body: JSON.stringify(content: taskContentInput.current.value)
)
return (
<form onSubmit=handleSubmit className="__component_todolist_form_container">
<input type="text" name="task" ref=taskContentInput placeholder="nouvelle tâche.."></input>
</form>
)
在我的组件中,我正在执行此操作,并且在我的快速服务器中:
app.post('/api/tasks', (req, res) =>
console.log(req.body)
console.log('request received!')
)
当我测试时,我收到了请求,但 req.body 在我的控制台中返回“”,我不明白,我正在使用 app.use(express.json()) 但它不起作用,我甚至尝试使用 body-parser 但是... 所以拜托,我需要帮助..谢谢!
【问题讨论】:
【参考方案1】:你需要:
-
与正在发送的数据匹配的正文解析器。您已从发送表单编码数据切换到发送 JSON。注意Express has built-in body parsing middleware 不需要单独的
body-parse
NPM 模块。
请求中的 Content-Type
标头说明数据的格式,以便可以触发正确的正文解析器。
这样的:
app.post('/api/tasks', express.json(), (req, res) =>
console.log(req.body)
console.log('request received!')
)
和
fetch('/api/tasks',
method: 'POST',
headers:
'Content-Type': 'application/json'
,
body: JSON.stringify(content: taskContentInput.current.value)
)
【讨论】:
谢谢,它正在工作!我忘记了标题以上是关于当我使用 fetch post 发布数据时,我没有收到数据的主要内容,如果未能解决你的问题,请参考以下文章
当我调用 post 方法时反应原生 Axios 或 fetch(get 方法工作正常) post 参数在服务器端获取空数据
使用 fetch 进行 POST 请求以将数据添加到 JSON 服务器数据库
使用 fetch 时 POST https://accounts.spotify.com/api/token 415 错误
POST 请求适用于 Postman,但不适用于 axios 或 .fetch()