2016-07-24 101 views
2

我的代码是象下面这样:restify.js路线终点冲突

  1. server.get('/currency/:code', currency.find);
  2. server.get('/currency/rates', currency.rate_getall);

每当我试图达到[/速率]端点,服务器会认为我我将参数传递给'/ currency /:code'路由。我怎样才能解决这个问题?谢谢。

Ryan

+0

尝试更改订单。这将是一个黑客。更好的解决方案是重新考虑你的API设计。 –

+0

谢谢。我试图使用RegEx,它迄今为止工作。不过,我很好奇,如果有任何其他适当和更好的方法来解决它。谢谢。我使用的RegEx是'server.get('/ currency /:code((?:^ | \ W)(rates)(?:$ | \ W))',currency.find);'。 – Ryan

回答

1

如果你能我会考虑改变你的休息界面只是一点。

server.get('/currency/:code', currency.find); 
server.get('/currency/rates/:type', currency.rate); 

它解决您最初的问题,并允许在未来的灵活性,如果你只是想返回率特定货币的方式。

在你的currency.rate函数中,你可以检查一个id或文字'all'并返回合适的值。