2016-10-10 21 views
0

Swagger-UIのカスタムJavaScriptファイルでリクエストを送信する前にヘッダーに追加する必要があったため、リクエストURLにアクセスしようとしました。Swagger UIの呼び出し呼び出しURL

わかりやすいUIのソースを見ても、リクエストURLにアクセスする方法を理解できませんでした。

(function() { 
    $(function() { 

     $(".submit").click(function (e) { 

      // doesn't work 
      // log(SwaggerUi.Views.OperationView.invocationUrl); 

      var url = $($(this).parentsUntil(".operations")[3]).find(".path")[0].innerText; 
      log("URL: " + url); 

     }); 
    }); 
})(); 

しかし、これはハックですルートはそうのようなパラメータがあった場合、それは動作しませんさ:url/{param}を私は使用してDOMから盗むだまさましたJavaScriptファイル私のカスタムで

。入力パラメータを見つけて置き換えることは、私がむしろ取ることのない別のステップになります。闊歩によって保存されている代わりに、情報を使用しての必要な情報を取得するためのDOMを横断するSwaggerUi.requestUrl

+0

あなたがinvocationUrlとはどういう意味ですか? –

+0

コントローラのリクエストURL。たとえば、 '/ get-items/{itemGuid}'にコントローラがあり、リクエストURLが 'http:// somedomain.com/api/v1/get-items/1234'の場合 –

+0

好奇心を求める理由は何ですか?カスタムJavaScriptからURLを呼び出す必要がありますか? –

答えて

0

考案ソリューション:

は、私は私がの線に沿って、リクエストURLの何かにアクセスすることを可能とするいくつかの簡単な方法をしないのです-UI。

は(注:あなたが闊歩-UIの異なるバージョンを使用する場合は、あなたの走行距離Swashbuckle 5.4で与え埋め込ま威張っ-UIを使用して変更される場合があります)

$(".submit").click(function (e) { 

    var originalUrl = $($(this).parentsUntil(".operations")[3]).find(".path")[0].innerText; 
    log(originalUrl); 

    var outputUrl = ""; 

    $($(this).parentsUntil(".operations")[3]) 
     .find("tbody.operation-params tr:contains('path')") 
     .find("input") 
     .each(function() { 

     var pathParam = $(this).attr('name'); 
     log(pathParam); 

     var userInput = $(this).val(); 
     log(userInput); 

     outputUrl = originalUrl.replace("{" + pathParam + "}", userInput); 
     log(outputUrl); 
    }); 

    // final requestUrl or invocationUrl 
    var requestUrl = $(".footer h4").html().match(/: (\/[\w-]+)/)[1] + outputUrl; 
}); 
関連する問題