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