2016-11-23 3 views
0

мой Nodejs сервер будет reciveing ​​следующий после запроса:как я могу слушать неизвестного запроса в NodeJS

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

где DeviceId, TypeID, серийный # являются переменными, а не то же самое

Я использовал следующее, чтобы выяснить, что представляют собой эти переменные, однако это не оптимальное решение, которое я ищу, потому что есть другие запросы, которые начинаются так же, как /v1/devices/registrations/

app.post("/v1/devices/*", function (req, res) { 
}); 

Так что главный вопрос заключается в том, как я могу определить, что при получении запроса на запись со следующей структурой /v1/devices/deviceID/registrations/typeID/serial#, хранить значения DeviceID, TypeID и серийный #

также, как я могу сделать то же самое для этих 2 запросов , также отметить, что устройства и тип идентификаторами являются переменными

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