2016-07-24 49 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'並返回合適的值。