没有调用HTTP端点,而是调用了路径参数的端点?

时间:2016-05-17 11:37:54

标签: node.js express routes

当我向http://localhost:4101/endpoint/field发出请求时,始终会记录endpoint/:id

为什么不记录endpoint/field

我理解:id是一个路径参数,可以是任何内容,但我明确表示field应该以不同的方式处理。

'use strict';
var express = require('express');
var app = express();
var PORT = 4101;

app.route('/endpoint/:id')
  .get(function(req, res) {
    console.log('endpoint/:id');
  });
app.route('/endpoint/field')
  .get(function(req, res) {
    console.log('endpoint/field');
  });

app.listen(PORT, function(err) {
  if (err) {
    console.log('err on startup ' + err);
    return;
  }

  console.log('Server listening on port ' + PORT);
});

1 个答案:

答案 0 :(得分:4)

路线的顺序很重要。使用第一个有效路线。

/endpoint/:id/endpoint/field有效,因为:id可以是任何

所以你需要切换订单。

另见Node.js Express route naming and ordering: how is precedence determined?