2013-05-13 41 views
1

问题:如何在accept-version头文件中指定通配符semvar? (Restify 2.5.0)Restify和semver通配符

目标:接受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"} 

我能得到这个worki通过设置routes version to '1.0.5'(示例范围)然后指定clients accept-version to ~1,但是,它似乎更适合在服务器端设置通配符。有任何想法吗?

回答

1

服务器应该是它暴露的版本的权威,所以它是没有意义的,它是模糊/合理的关闭(使用代字前缀)。

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