Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Swagger UI时添加标题_Javascript_Swagger_Swagger Ui - Fatal编程技术网

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