Что означает этот синтаксис в http-запросе?

Мне нужно понять, что означает эта строка кода

app.get("/users/:id", function(req, res){
         var data = userModel.find().where('username', req);
         res.send(data);
     });

Часть, которую я не понимаю, это «/users/:id», в частности, часть :id. Что означает этот синтаксис http-запроса?


person Cesar Jr Rodriguez    schedule 23.12.2015    source источник
comment
Связанный: stackoverflow.com/questions/20089582/   -  person Dan    schedule 24.12.2015
comment
Это не столько вещь Node.js, сколько вещь Express (которая является платформой Node). :id обозначает переменный путь. Вы можете получить значение id из запроса, но я не очень хорошо знаю Express, поэтому подождите, пока кто-нибудь не придет.   -  person ndugger    schedule 24.12.2015
comment
В соответствии с RFC3986, : – это обычный допустимый символ в компоненте пути в URL-адрес, отличный от первого компонента. Поэтому он не должен делать ничего особенного в клиенте. На сервере он может делать что угодно, как и любой другой компонент пути.   -  person David Schwartz    schedule 24.12.2015


Ответы (1)


В приведенном выше коде отправка запроса GET на /users/42 приведет к тому, что 42 будет сохранено в req.params.id.

По сути, :id сообщает, что все, что находится в URI запроса, где :id находится в объявлении маршрута, должно интерпретироваться как сохраненное в объекте req.params с именем свойства id.

Скорее всего, вы захотите что-то более похожее на это:

app.get("/users/:id", function(req, res){
    var data = userModel.find().where('id', req.params.id);
    res.send(data);
});
person dvlsg    schedule 23.12.2015