当我使用 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()

使用 Fetch API 重新验证的 POST 请求不起作用

JavaScript POST fetch 作为 OPTIONS 发送