【问题标题】:How to use method delete with Json-server and Axios?如何在 Json-server 和 Axios 中使用方法删除?
【发布时间】:2018-10-06 07:09:33
【问题描述】:

我正在做一个项目并使用json-serveraxios.js,但我的方法delete 有问题。

我的axios.js

remove = (id) => {
  axios.delete('http://127.0.0.1:3000/people/', id)
    .then(function(response) {
      this.setState({
        filtered: response
      })
    }).catch(function(error) {
      console.log(error)
    })
}

路线http://127.0.0.1:3000/people 属于json.server..

还有错误:

加载资源失败:服务器响应状态为 404(未找到)

有人可以帮助我吗?

【问题讨论】:

    标签: javascript reactjs axios json-server


    【解决方案1】:

    这里有一些不同的建议。

    1) 尝试使用axios.delete('http://127.0.0.1:3000/people/' + id),而不是使用逗号,这样它只会认为网址是http://127.0.0.1:3000/people/3 或其他任何内容

    2) 通过配置对象传递 id,所以axios.delete('http://127.0.0.1:3000/people/', {params: {id: id})

    一旦您开始执行删除操作:我相信 DELETE 请求的响应是一个空对象,因此您将设置 state.filtered = {}。我假设您想要没有您刚刚删除的人的人员列表?

    【讨论】:

    • 谢谢你的回答,我想要一个没有删除人的列表
    • 在这种情况下,您可能需要再次致电axios.get('http://127.0.0.1:3000/people/'),然后回复将是完整列表。
    • 我也已经有了getpost的方法。我想要delete 方法,但会给出错误:(
    • 首先,您需要将发出删除请求的方式更改为我上面提供的选项之一。然后它不会返回那个错误。然后,您需要再次 GET。
    • 能否请您详细说明最后一句话?当使用 angular 的 httpModule 时,DELETE 方法正在删除 db.json 中的全部数据。 GET 在 DELETE 之后返回空列表。
    【解决方案2】:

    您可以使用DELETE 方法请求正确的uri

    示例:

    DELETE /users/1
    
    http://localhost:4000/users/1
    

    【讨论】:

      【解决方案3】:

      尝试将您的 json 对象的主键名称更改为 id,我认为您 可能是这样的

         {
        "tasks": [
          {
            "task_id": 2,
            "task_name": "test2",
            "day": "may 20 2021",
            "reminder": true
          },
          {
            "task_id": 3,
            "task_name": "test3",
            "day": "june 2 2021",
            "reminder": true
          }
        ]
      }
      

      像这样改变并尝试,它对我有用

        {
        "tasks": [
          {
            "id": 2,
            "task_name": "test2",
            "day": "may 20 2021",
            "reminder": true
          },
          {
            "id": 3,
            "task_name": "test3",
            "day": "june 2 2021",
            "reminder": true
          }
        ]
      }
      

      【讨论】:

        【解决方案4】:

        我刚刚遇到这个问题。 axios.method(url/id) 语法似乎只适用于 GET 和 POST。对于删除,我使用了这个:

        axios({
          method: 'DELETE',
          url: 'http://127.0.0.1:3000/people/' + id
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-05
          • 2018-10-17
          • 2019-01-21
          • 2021-12-26
          • 2019-02-02
          • 2020-01-09
          • 2018-04-10
          • 2019-05-27
          相关资源
          最近更新 更多