2017-05-10 4 views
-1

いくつかのバージョンのAPIがあります。すなわち 1./v1/order/create 2./order/v2/createAPIフォームURLのバージョンを取得する正規表現

これは一般的なミドルウェアです。ミドルウェアでは、特定のバージョンの特定のタスクを実行するために、API(つまりv1またはv2)のバージョンが必要です。私は以下のコードで試してみましたが、第2のタイプのURLには失敗しました。

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

お勧めします。ありがとう

+0

あなたは '/オーダー/ V2/create'の場合には2 '、'取得する必要がありますか? –

+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+)はなどV0、V1、V2、V123、などの整数の数字が続くVを取り込むことができます
  • 小数点以下のバージョンも許可する場合は、/\/(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