gpt4 book ai didi

node.js - 根据版本号动态路由

转载 作者:搜寻专家 更新时间:2023-10-31 23:55:35 26 4
gpt4 key购买 nike

我正在使用 Express3 框架在 node.js 上开发 Web API,我希望我的路由看起来像 /v0.1/function

理想情况下,路由应该通过查看 url 中给出的主要和次要版本号来自动加载指定版本的模块。到目前为止,我的方法是:

app.use('/v:major.:minor', function(req) {
return require('./v' + req.params.major + '.' +
req.params.minor);
});

在我的 ./v0.1/index.js 中:

module.exports = function() {
var express = require('express'),
app = express();
app.get('/test', function(req, res) {
res.json({ success: true });
});
return app;
}();

如果我现在调用 /v0.1/test,它会以某种方式不匹配路由 (404),但是 app.get('/v:major.:minor', function(req, res) {/* ... */}); 工作正常。

我怎样才能做到这一点?

最佳答案

我想你想要 app.all ( http://expressjs.com/api.html#app.all )

这将使所有 HTTP 动词都可以访问,并且变量路由仍然有效。

我测试了它,它似乎有效。

根据评论编辑

app.all('/v:major.:minor/:endpoint', function(req, res, next) {
var version_handler = require('./v' + req.params.major + '.' + req.params.minor);
if (!req.params.endpoint in version_handler) // endpoint_isn't supported at this version, 404
version_handler[req.params.endpoint](req, res, next);
});

关于node.js - 根据版本号动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15214234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com