我正在尝试使 Webpack Dev Server 为不同的方法提供不同的响应:POST、PATCH 和 DELETE。 似乎服务器只接受 POST 请求。尝试对 PATCH 和 DELETE 使用相同的端点时,服务器返回 404。
我正在寻找有关如何正确处理这种情况的建议。我正在使用服务器作为数据库的代理,并且我正在使用它提供模拟数据。
如果你想创建一个命名的API,它根据不同的方法(POST
,PATCH
,DELETE
)发送不同的响应,你需要创建多个路由来实现这一点。
const express = require('express');
const userCtr = require('./userController');
const userRouter = express.Router();
userRouter.post('/ticket', userCtr.createTicket); // create a ticket
userRouter.patch('/ticket', userCtr.updateTicket); // update a ticket
userRouter.delete('/ticket', userCtr.deleteTicket); // delete a ticket
module.exports = userRouter;
解释在上面的代码中,路由
/ticket
可以用于不同的方法,即(POST
,PATCH
,DELETE
)。这里response
会根据method
而改变,它可以帮助你使你的代码易于管理且易于调试。
您也可以通过这样的.all
来实现这一点
最差做法
userRouter.all('/ticket', userCtr.ticketOperations); // can be post/patch/delete anything
在这种情况下,您需要在函数中加入更多条件,例如
req
post
中,并在req.body
中有一些data
,然后创建资源。req
在delete
有一些id
req.query
然后是资源。- 等。。。
所以我的建议是,如果您需要生成这样的 API,它处理多个HTTP Methods
并根据方法处理不同的方法,那么您需要使用多个路由以及相同的名称,在我的实例中,路由名称/ticket
将用于create/update/delete
ticket
。
最佳实践
userRouter.post('/ticket', userCtr.createTicket); // create a ticket
userRouter.patch('/ticket', userCtr.updateTicket); // update a ticket
userRouter.delete('/ticket', userCtr.deleteTicket); // delete a ticket