1

问题:如何在接受版本标头中指定通配符 semvar?(修正 2.5.0)

目标:接受 1.xx 查看文档,看起来这是通过将 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'(Example in range) 然后指定 来实现这clients accept-version to ~1一点,但是,它似乎更适合在服务器端设置通配符。有任何想法吗?

4

1 回答 1

1

服务器应该是它所公开的版本的权威,因此模糊/合理关闭(使用波浪号前缀)是没有意义的。

Restify 使用semver公开版本(更具体地说是node-semver),因此 ~1 不是有效版本。正如您所发现的,客户可以要求它想要的特定版本或要求一个范围。

于 2013-10-29T22:02:53.667 回答