在Swagger UI中访问调用URL



在Swagger-UI的自定义JavaScript文件中,我试图访问请求URL,因为我需要在提交请求之前将其添加到header中。

查看了swagger UI的源代码后,我还不知道如何访问请求URL。

在我的自定义JavaScript文件中,我通过使用

从DOM中窃取来作弊:
(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);
        });
    });
})();

但是由于这是一个hack,如果路由有一个像这样的参数,它将不起作用:url/{param}。找到输入参数并进行替换是我不想采取的另一个步骤。

我错过了一些简单的方法,将允许我访问请求URL沿着一行的东西:SwaggerUi.requestUrl

设计的遍历DOM获取所需信息的解决方案,而不是使用由Swagger-UI存储的信息。

(注意:使用Swashbuckle 5.4提供的嵌入式Swagger-UI,如果您使用不同版本的Swagger-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;
});

最新更新