#html #node.js #express
#HTML #node.js #выразить
Вопрос:
Я пытаюсь создать CRUD api, используя express и mongoose. У меня есть html-форма, и мне удалось выполнить запросы GET и POST, но я не могу выполнить УДАЛЕНИЕ и ВСТАВКУ с помощью html-формы. Я знаю, что html5 и браузеры не поддерживают метод DELETE и PUT, но как веб-сайты обрабатывают их? Они используют только методы POST и GET? Я читал в одной статье, что не рекомендуется использовать POST-запросы для целей, отличных от создания, из-за кэшей и файлов cookie. И я не хочу обрабатывать их с помощью вызовов AJAX. app.js (на стороне сервера):
app.delete("/deleteItem/:name", (req, res)=>{
//delete the item from database
});
app.put("/updateItem", (req, res)=>{
//get the req.query or req.body and update the item in database
});
index.html
<!--this is for POST requests-->
<form method="POST" action="/addItem">
<input type="text" name="itemName" required/>
<input type="Submit" value="Submit"/>
</form>
<!--if DELETEwas supported ->
<form method="DELETE" action="/deleteItem">
<input type="text" name="itemName" required/>
<!--I want to get the value of the itemName field in order to delete it in server side using mongoose-->
<input type="Submit" value="Delete"/>
</form>
<!--if PUT was supported ->
<form method="DELETE" action="/deleteItem">
<input type="text" name="itemName" required/>
<!-- inputs.... -->
<!-- I want to get the values of the input fields in order to update the item in server side using mongoose-->
<input type="Submit" value="Update"/>
</form>
Вкратце, я хочу знать, есть ли способ получить значения входных данных без использования POST.
Заранее благодарю вас.
Комментарии:
1. Использовать метод-переопределить промежуточное программное обеспечение: github.com/expressjs/method-override
2. Спасибо за ответ. Это было полезно.
3. Я нашел другой способ благодаря ссылке, которую вы указали в комментарии: Я переназначил значение
req.method
toDELETE
в промежуточном программном обеспечении на маршруте, который я хочу выполнитьdeleteItem
, и это сработало.app.use("/deleteItem", (req, res,next)=>{ req.method = "DELETE" next(); });
Я хочу знать, столкнусь ли я с некоторыми проблемами вместо использованияmethod-override
модуля?4. но таким образом вам нужно переопределить это промежуточное программное обеспечение для каждого маршрута и любого другого метода, такого как PUT, PATCH и …. метод-переопределение , в двух словах, делает то же самое ( замена
req.method
), но гораздо более гибким и безопасным способом. Также предоставляет клиентам возможность отправлять желаемый метод либо через пользовательский заголовок , либо в качестве параметра запроса .5. Хорошо. Это просто, если я хорошо понял концепцию переопределения метода. Спасибо за помощь.