Как сделать запросы на удаление или размещение с пользовательским вводом в node.js ?

#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 to DELETE в промежуточном программном обеспечении на маршруте, который я хочу выполнить deleteItem , и это сработало. app.use("/deleteItem", (req, res,next)=>{ req.method = "DELETE" next(); }); Я хочу знать, столкнусь ли я с некоторыми проблемами вместо использования method-override модуля?

4. но таким образом вам нужно переопределить это промежуточное программное обеспечение для каждого маршрута и любого другого метода, такого как PUT, PATCH и …. метод-переопределение , в двух словах, делает то же самое ( замена req.method ), но гораздо более гибким и безопасным способом. Также предоставляет клиентам возможность отправлять желаемый метод либо через пользовательский заголовок , либо в качестве параметра запроса .

5. Хорошо. Это просто, если я хорошо понял концепцию переопределения метода. Спасибо за помощь.