2016-11-23 73 views
0
未知的请求

我的NodeJS服务器将reciveing以下POST请求:我怎么能收听的NodeJS

POST /v1/devices/deviceID/registrations/typeID/serial#

,其中设备ID,TYPEID,序列号是变量和不一样的

我没有使用以下方法来找出这些变量,但是这不是我要找的,因为有两个具有相同的开始像/v1/devices/registrations/

app.post("/v1/devices/*", function (req, res) { 
}); 
其他要求的最佳解决方案

所以,主要的问题是我怎么能确定的是,当您收到以下结构/v1/devices/deviceID/registrations/typeID/serial# POST请求,存储的DeviceID,TYPEID的价值观和序列号

还我该怎么办了这2个请求相同的,还要注意设备和类型ID是变量

if the following is requested 
GET /v1/devices/<deviceID>/registrations/<typeID> 
do something 
else if 
GET /v1/devices/<deviceID>/registrations/<typeID>?passesUpdatedSince=<tag> 
do something else 

回答

1

虽然没有提到,我假设你使用的是带有节点ExpressJS,如果你不使用Express您可以轻松地用它实现这一目标。

您可以轻松使用路由参数的内置功能。

http://expressjs.com/en/guide/routing.html

即,

app.post("/v1/devices/:deviceID/registrations/:typeID/:serial", function (req, res) { 
    var deviceId = req.params.deviceId; 
    var typeId = req.params.typeId; 
    var serial = req.params.serial; 
}); 

所以你不需要有包罗万象,你可以设计出具体路线的每一个请求你。

您可以使用同样的方法为你的第二个例子,可以在路线中访问查询参数例如req.query.passesUpdatedSince

+0

是的,我使用ExpressJS,谢谢:) – nero

+0

我怎样才能使它区分有查询和没有查询的那个? – nero

+0

您可以简单地将检查添加到路由的顶部,以便if(!req.query.passesUpdatedSince)' – Blakey