Javascript 使用Swagger UI时添加标题
我的Javascript 使用Swagger UI时添加标题,javascript,swagger,swagger-ui,Javascript,Swagger,Swagger Ui,我的swagger.json文件(localhost:8000/rest/swagger.json)所在的端点需要AuthType头才能访问它。当Swagger UI对Swagger.json文件发出初始请求时,如何让它添加这个 到目前为止,我所尝试的: $(function () { var token = 'xxx'; window.swaggerUi = new SwaggerUi({ url: "http://" + location.host + "/
swagger.json
文件(localhost:8000/rest/swagger.json
)所在的端点需要AuthType
头才能访问它。当Swagger UI对Swagger.json
文件发出初始请求时,如何让它添加这个
到目前为止,我所尝试的:
$(function () {
var token = 'xxx';
window.swaggerUi = new SwaggerUi({
url: "http://" + location.host + "/rest/swagger.json",
dom_id: "swagger-ui-container",
supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
onComplete: function (swaggerApi, swaggerUi) {
var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization("AuthToken", token, "header");
window.swaggerUi.api.clientAuthorizations.add("AuthToken", apiKeyAuth);
$('pre code').each(function (i, e) {
hljs.highlightBlock(e)
});
},
docExpansion: "none",
apisSorter: "alpha",
showRequestHeaders: false
});
swaggerUi.load();
});
但是,当我打开Chrome开发工具并查看向localhost:8000/rest/swagger.json发出的请求时,它没有AuthType
头,并且有401个未经授权的响应
注意:似乎从来没有调用过onComplete
函数(我猜它在调用之前通常会请求swagger.json
,因此当请求失败时,它会落入onFailure
块中)在您的示例中,您有window.swaggerUi
,但尚未将swaggerApi
变量分配给窗口
对象
尝试:
第二:
虽然浏览器可能能够找到正确的swaggerUi
变量,但请尝试加载:
window.swaggerUi.load()代码>
而不是:
swaggerUi.load()代码>我将向您提供我的场景。说实话,自大的自述并没有达到标准(这是我的观点)。他们没有提到任何关于向url请求添加头的内容
我的用例是,我必须调用我的API来获得JSON响应(我的API受login\u requireddecorator的保护,它需要xcsrf令牌在头中发送)
在您的例子中,您的localhost:8000/rest/swagger.json类似于我的API
如何处理这个问题?
当我们使用SwaggerUIBundle时,名为的键“spec”(稍后将在代码段中解释spec)必须映射为JSON response值。这个JSON响应为swagger ui页面提供了初始结构
你在说什么?你在说什么样的用户界面?JSON响应的结构是什么?
要使用swagger ui创建这种类型的页面,您需要为其提供JSON响应
使用AJAX请求调用API或
localhost:8000/rest/swagger.json
现在在您的成功调用中,JSON必须等同于“spec”
使用代码片段的解释
实例化SwaggerUIBundle对象。请注意spec键,它必须映射到JSON响应值dom_id可以是任何div的id
const ui=SwaggerUIBundle({
spec:{},//将JSON响应放在这里。
dom_id:“#招摇过市用户界面”,
预设:[
SwaggerUIBundle.presets.api,
//yay ES6模块↘
isArray(SwaggerUIStandalonePreset)?SwaggerUIStandalonePreset:SwaggerUIStandalonePreset.default
],
插件:[
SwaggerUIBundle.plugins.DownloadUrl
],
布局:“独立布局”
})
window.ui=ui
欢迎来到StackOverflow!您的答案似乎没有为问题提供任何新信息-看起来您想问一个新问题。请慢慢阅读以下关于如何提出好问题的文章:
onComplete: function (swaggerApi, swaggerUi) {
window.swaggerApi = swaggerApi;
var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization("AuthToken", token, "header");
window.swaggerUi.api.clientAuthorizations.add("AuthToken", apiKeyAuth);
$('pre code').each(function (i, e) {
hljs.highlightBlock(e)
});
}