Curl 命令在 swagger UI 中显示为未定义,带有令牌。?

mkH*_*Hun 8 javascript swagger swagger-ui

我正在我的项目中集成 swagger UI。我需要传递令牌才能提出请求。

const mytoken = "heareismytoken";

const ui = SwaggerUIBundle({
    url: "/swagger/v2/swagger.json",
    dom_id: '#swagger-ui',
    deepLinking: true,
    requestInterceptor: function (req) {
        var key = mytoken;

        if (key && key.trim() !== "") {
            req.headers.Authorization = 'Bearer ' + key;
            console.log('Authorized from authKey');
        }
    },
    presets: [
        SwaggerUIBundle.presets.apis,
        SwaggerUIStandalonePreset
    ],
    plugins: [
        SwaggerUIBundle.plugins.DownloadUrl
    ],
    layout: "StandaloneLayout",
});
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我得到了成功的响应,但问题是 curl 命令显示为未定义,如下图所示在此处输入图片说明

如果我删除了以下代码部分

    /* 
    requestInterceptor: function (req) {
        var key = mytoken;

        if (key && key.trim() !== "") {
            req.headers.Authorization = 'Bearer ' + key;
            console.log('Authorized from authKey');
        }
    }, */
Run Code Online (Sandbox Code Playgroud)

显示 curl 命令,但响应抛出身份验证错误。

我不知道我到底在哪里错过了它。如何同时显示 CURL 命令和响应。?

Zav*_*Zav 4

根据Swagger UI 的文档

请求拦截器:

Function=(a => a)。必须是一个函数。拦截远程定义、“尝试一下”和 OAuth 2.0 请求的函数。接受一个参数 requestInterceptor(request)并且必须返回修改后的 request,或者解析为修改后的 request 的 Promise 。

在提供的代码中缺少返回语句。正确的代码将是:

requestInterceptor: function (req) {
    var key = mytoken;

    if (key && key.trim() !== "") {
        req.headers.Authorization = 'Bearer ' + key;
        console.log('Authorized from authKey');
    }
    return req; // <--- This line was added
}
Run Code Online (Sandbox Code Playgroud)