2016-11-23 80 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