问题描述
如果我在 Expresssjs 配置文件 server.js 中配置了以下端点
// Generic
app.post('/mycontext/:_version/:_controller/:_file',(req,res) => {
const {_version,_controller,_file} = req.params;
const mockDataFile = path.normalize(path.join(mockRoot,`${_version}/${_controller}/${_file}.json`));
});
// Specific
app.post('/mycontext/v1/mycontroller/myendpoint',res) => {
});
对于从 UI 调用的端点,例如 /mycontext/v1/mycontroller/myendpoint,这两个中的哪一个会被映射?定义这些配置的顺序有任何影响吗?
解决方法
先到先得。
2000
根据路径的特殊性和声明的顺序计算路径的优先级。路由从最具体到不太具体的一个排序。
第一个将被命中:
ExpressJS
请记住,在 app.post('/mycontext/:_version/:_controller/:_file',(req,res) => {
const {_version,_controller,_file} = req.params;
const mockDataFile = path.normalize(path.join(mockRoot,`${_version}/${_controller}/${_file}.json`));
});
中没有将我们的路由声明为按优先级排序的列表的内置方法。
不过,您可以始终在 ExpressJS
之前声明 specific routes
作为最佳做法。