Доступ к URL-адресу вызова в пользовательском интерфейсе Swagger

В пользовательском файле JavaScript в Swagger-UI я пытался получить доступ к URL-адресу запроса, потому что мне нужно было добавить его в заголовок перед отправкой запроса.

После просмотра источника пользовательского интерфейса swagger я не смог понять, как получить доступ к 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);

        });
    });
})();

Но так как это хак, он не будет работать, если маршрут имеет такой параметр: url/{param}. Найти входной параметр и заменить его было бы еще одним шагом, который я бы предпочел не делать.

Я пропустил какой-то простой способ, который позволил бы мне получить доступ к URL-адресу запроса, например: SwaggerUi.requestUrl


person Betsalel Williamson    schedule 10.10.2016    source источник
comment
что вы подразумеваете под invocationUrl?   -  person Silly John    schedule 11.10.2016
comment
URL-адрес запроса для контроллера. Например, если у меня есть контроллер в /get-items/{itemGuid}, но URL-адрес запроса http://somedomain.com/api/v1/get-items/1234   -  person Betsalel Williamson    schedule 11.10.2016
comment
Интересно, зачем вам нужно вызывать URL-адрес из пользовательского JavaScript?   -  person Silly John    schedule 11.10.2016
comment
Я ищу URL-адрес запроса, потому что мне нужно передать его в заголовке моей службе. Редактирование вопроса для отражения URL-адреса запроса вместо URL-адреса вызова.   -  person Betsalel Williamson    schedule 11.10.2016
comment
Вы используете веб-API asp.net, верно?   -  person Silly John    schedule 11.10.2016
comment
Да, я использую Swashbuckle 5.4 и веб-API asp.net.   -  person Betsalel Williamson    schedule 11.10.2016
comment
Тем не менее я не понимаю, зачем вам URL в заголовке   -  person Silly John    schedule 11.10.2016
comment
Я не могу ответить на ваш вопрос прямо, и я не уверен, как это поможет вам. Для этого вопроса достаточно того, что мне нужно иметь доступ к URL-адресу запроса и вставить эту информацию в заголовок до завершения отправки.   -  person Betsalel Williamson    schedule 12.10.2016


Ответы (1)


Разработано решение для обхода DOM для получения необходимой информации вместо использования информации, хранящейся в пользовательском интерфейсе Swagger.

(примечание: при использовании встроенного пользовательского интерфейса Swagger, предоставленного Swashbuckle 5.4, ваш пробег может отличаться, если вы используете другую версию пользовательского интерфейса Swagger)

$(".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;
});
person Betsalel Williamson    schedule 19.10.2016