【问题标题】:Axios PUT request doesn't workAxios PUT 请求不起作用
【发布时间】:2018-05-20 10:42:01
【问题描述】:

axios.put 方法在 axios.post 工作时不起作用。

这是发布请求的工作示例。 (示例)

let response = await axios.post(`${ROOT_URL}/urls/url/`, {
    post_id,
    password,
    content
  }, { headers });
  console.log(response.status) // 201.

我只是复制并粘贴了有效的post请求,并为put请求修改了一些字段和方法。但它在服务器端返回 400 错误。

let response = await axios.put(`${ROOT_URL}/profile/update/`, {
    title,
    gender
  }, { headers }); <- Server prints 400 HTTP error.

我使用Postman 进行了测试,并确认它适用于 put 方法。我不得不认为我的 axios.put 语法是错误的,但我不确定它与 post 方法有何不同。

如果你看到 axios 的官方文档页面,它看起来几乎一模一样。 Axios documentation link

而axios版本是0.16.2:"axios": "^0.16.2",

【问题讨论】:

  • 我会确保服务器期待一个类似于 {title: 'title', gender: 'gender'} 的对象,因为这是您的第二个参数扩展的对象。另外,你能发布代码来显示你的 headers 对象是什么样的吗?
  • 我会尝试查看服务器代码在到达端点时发生了什么。
  • 是的,你是对的。我把性别加上'u'并打印了400。原因是我将后端性别字段设置为选择特定的字符串值。谢谢你的建议!
  • 嗯...我应该删除问题吗? :)

标签: javascript reactjs react-native axios


【解决方案1】:

400 是错误请求,不允许使用 405 方法。

我会检查你的帖子是否正确。

这是一个有效的对象吗?

{
    title,
    gender
}

例子:

axios.put('/api/something', {
    foo: bar
})
    .then(function (response) {
        // do something...
    }.bind(this))
    .catch(function (error) {
        console.log(error)
    });

【讨论】:

  • 这是一个有效的对象,假设你的环境支持 es6 (docs)
  • 你为什么要.bind(this))
  • @Sua Morales,从我的代码中复制和粘贴,我需要访问成功处理程序中的外部范围,本示例中不需要
【解决方案2】:

我在这里发布这个也许它回答了某人的问题

如果在后端的 api 设置中。路线是这样配置的 'api/user1 or some other mode of identification/someData/anotherData'

您应该完全按原样发送数据,而不是作为对象发送。 所以在我的情况下是这样的: axios.put(`${Routes.ConfrimCode}${phoneNum}/${imei}/${code}`).then(res=>{ //callback })

【讨论】:

    猜你喜欢
    • 2018-12-28
    • 2020-03-24
    • 2019-05-20
    • 2022-12-21
    • 2018-12-25
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多