2017-01-04 11 views
1

200以上のサービスURLがあります。 URLの形式は次のとおりです。ジェネリックメソッドを使用してパラメータを使用してサービスURLを設定する方法

serviceURL = DomainName + MethodName + Path;

ドメイン名& MethodNamesは設定され、パスのフォーマット以下のようであってもよい。

Path = 'A' + '/' + Param1 + '/' + 'B' + '/' + Param2 + '/' + 'C' + '/'+ Param3; 

私の要件は、私はパラメータを持つ単一のURLを渡すことができ、一般的な方法を作成することであり、そのURLはそれに応じてのserviceURLを設定する必要があります。例えば、

Var URL = 'domain1/method1/A/{0}/B/{1}/C/{2}'; 

GenericMethod(URL, Param1, Param2, Param3){ 

//in URL domain1 should get replaced by DomainName 
// method1 should get replaced by MethodName 
//path URL {0} {1} {2} get replaced by params 

} 

誰もそのような要件/ニーズを抱えていますか?

提案があります。

おかげで

答えて

0

私はよくあなたの質問を理解してわからないんだけど、私がやった場合、あなたはこのような何かを行うことができるよりも。

function getPath(URL, Param1, Param2, Param3){ 
    return URL.replace('{0}', Param1).replace('{1}', Param2).replace('{2}', Param3); 
} 

$http.get(getPath(URL, Param1, Param2, Param3)); 

これを行う方法でサービスを作成することをお勧めします。

0

あなたが行うことができます(すべてのJS機能で利用可能)arguments変数や正規表現を少し使用して:これは何

function getServiceRequestURL(serviceURL) { 

    var requestURL = serviceURL; 

    for(var i = 1; i <= arguments.length; i++) { 
     requestURL = requestURL.replace(new RegExp('\\{' + (i-1) + '\\}', 'gi'), arguments[i]); 
    } 

    return requestURL 

} 

serviceURL過去のすべての引数を取得して{0}トークンを置き換えるです関数に渡される実際のパラメーター。これは、指定されたパラメータの量に関係なく、任意のサイズのサービスURLに対して機能します。

0

最も簡単な方法は、正規表現を使用することです:

var urlScheme = '{domain}/{method}/A/{param1}/B/{param2}/C/{param3}'; 

var URL = GenericMethod(urlScheme, 'myDomain', 'doSomething', 'a', 'b', 'c'); 

function GenericMethod(scheme, domain, method, param1, param2, param3){  
    return url 
     .replace(/\{domain\}/g, domain) 
     .replace(/\{method\}/g, method) 
     .replace(/\{param1\}/g, param1) 
     .replace(/\{param2\}/g, param2) 
     .replace(/\{param3\}/g, param3); 
} 

するか、(GenericMethodに代わり、リストの引数のハッシュを提供することで、より汎用的な行く{ドメイン:「MYDOMAIN」、PARAM1:「myParam1 '})、次にキーを反復処理します。

しかし、このような方法では、別の独立したサービスと今後のいくつかの新しいサービスとの間の暗黙の依存関係が追加され、別のURLスキームが必要になる可能性があります。

関連する問題