2017-05-10 33 views
-1

有一些版本的API。即 1./v1/order /創建 2./order/v2 /創建正則表達式獲取API表單URL的版本

它們是要調用的常用中間件。在midawre中,我需要API版本(即v1或v2)來爲特定版本執行某些特定任務。我嘗試使用下面的代碼,但第二種類型的URL失敗。

var pieces = req.url.replace(/^\/+/, '').split('/'); 
var version = pieces[0]; 
req.version = version || 0; 

請建議。謝謝

+0

你需要得到'2'在'/順序/ V2/create'的情況下? –

+0

您的路由器應該能夠爲您挑選它,而無需自己動手。路由器爲了生存而解析端點。 –

+0

@WiktorStribiżew都可以使用v2或2,但正則表達式應該適用於這兩種情況。 – Dharmraj

回答

0

不要從URL的開頭搜索。嘗試是這樣的:

var match = req.url.match(/\/v([0-9]+)\//); 
var version = 0; 
if (match) { 
    version = match[1]; 
} 
console.log(version); // outputs version number 
0

您可以使用此:

正則表達式:/\/(v\d+)\//

  • (v\d+)允許抓取是V後面跟着一些整數,如V1,V2,V123,V0等。
  • 如果您還想要允許小數版本控制,請使用/\/(v\d+.?\d*)\//。例如:V1.1,V2.0等

var url = "/v1/order/create" 
 
var pieces = url.match(/\/(v\d+)\//); 
 
console.log(pieces[1]); 
 
// Output is v1