在 Swagger UI 中访问调用 URL

Access invocation URL in Swagger UI

在 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;
});