Как использовать метод delete с Json-сервером и Axios?

Я делаю проект и использую json-server а также axios.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 (не найдено)

Кто-то может мне помочь?

6 ответов

Вы могли бы запросить надлежащее uri с DELETE метод.

пример:

DELETE /users/1

http://localhost:4000/users/1

попробуйте изменить имя первичного ключа вашего 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
    }
  ]
}

Вот несколько разных предложений.

1) вместо запятой попробуйте axios.delete('http://127.0.0.1:3000/people/' + id) так что просто будет думать, что URL http://127.0.0.1:3000/people/3 или что угодно

2) передать идентификатор через объект конфигурации, так axios.delete('http://127.0.0.1:3000/people/', {params: {id: id})

Как только вы получите удаление, работающее: я считаю, что ответ на запрос DELETE является пустым объектом, так что вы будете устанавливать state.filtered = {}, Я предполагаю, что вы хотите список людей без человека, которого вы только что удалили?

Попробуйте это, axios.delete(http://127.0.0.1:3000/people/${id})

Я просто столкнулся с этой проблемой. Синтаксис axios.method(url/id) работает только с GET и POST. Для удаления я использовал это:

axios({
  method: 'DELETE',
  url: 'http://127.0.0.1:3000/people/' + id
});
       axios.delete('http://127.0.0.1:3000/people/'+id, )
    .then(function(response) {
      this.setState({
        filtered: response
      })
    }).catch(function(error) {
      console.log(error)
    })
Другие вопросы по тегам