В чем разница между Mongoose Delete и Express app.delete - PullRequest
1 голос
/ 28 июня 2019

Я изучаю NodeJS и использую MongoDB для базы данных (mongoose для взаимодействия). Текущий курс, который я делаю, - это только использование методов mongoose для «удаления» и «обновления», а также использование Express для отправки запроса «post». то есть:

app.post("/delete", function(req, res){
  //do something
  Item.findByIdAndRemove(item, function(err){
  })
})

Но если вы посмотрите документацию по базовой маршрутизации Express, они предложат использовать:

app.delete('/item', function (req, res) {
  res.send('Got a DELETE request at /item')
})

Я знаю, что все должно быть RESTful, и использование запроса POST для выполнения запроса DELETE может вызвать проблемы, но в этом случае они оба выполняют одно и то же? Извините, если этот вопрос новичок или его трудно понять, это было то, что я заметил, читая статью о REST сегодня.

Ответы [ 2 ]

2 голосов
/ 28 июня 2019

Лучше использовать app.delete, а не app.post, потому что это отражает природу того, что делает конечная точка. Легче увидеть, что вы хотите УДАЛИТЬ элемент в следующем коде:

app.delete("/item", (req, res) => { /* Delete item */ });

Но POST-запрос используется для публикации нового элемента в хранилище - поэтому он менее понятен. Единственным другим обычным способом является использование запроса GET с именем метода в URI (см. это видео для плохой практики RESTful API, включая этот).

app.get("/delete-item", (req, res) => { /* Delete item */ });
1 голос
/ 28 июня 2019

POST используется для добавления данных в базу данных, а DELETE удаляет элементы из базы данных. Он позволяет получить более четкий код и полезен для почтальона, поскольку у вас может быть один и тот же URL, но это другой запрос, поэтому вы можете получить другой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...