问题:如何在accept-version标头中指定通配符semvar? (Restify 2.5.0)
目标:接受1.x.x.查看文档,看起来这是通过将semver设置为~1或1.x来实现的。然而,Restify似乎没有处理这个问题。
服务器
var server = restify.createServer({
version: '1.1.0',...
路线:
server.get({
path: /^\/([a-zA-Z0-9_\.~-]+)\/(.*)/,
version: '1.x' // also tried '~1'
},
function(req, res, next){
req.log.debug(req.params,'Request');
res.send(req.params);
});
结果:
{"code":"InvalidVersion","message":"* is not supported by GET /sys/blah"}
我能够通过设置routes version to '1.0.5'
(范围中的示例)然后指定clients accept-version to ~1
来实现此功能,但是,似乎更适合在服务器上设置通配符侧。有什么想法吗?
答案 0 :(得分:1)
服务器应该是它所公开的版本的权限,因此它无法模糊/合理关闭(使用波浪号前缀)。
Restify正在使用semver来公开版本(更具体地说是node-semver)所以~1不是有效版本。正如您所发现的那样,客户可以根据需要询问具体版本或要求范围。