当前位置: 首页 > 知识库问答 >
问题:

用Swagger发送多个标头

扈沛
2023-03-14

我在试着设置Swagger

$(function () {
  var url = window.location.search.match(/url=([^&]+)/);
  if (url && url.length > 1) {
    url = decodeURIComponent(url[1]);
  } else {
    url = "http://localhost:9033/api/swagger.json";
  }
  window.swaggerUi = new SwaggerUi({
    url: url,
    dom_id: "swagger-ui-container",
    supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
    onComplete: function(swaggerApi, swaggerUi){
      if(typeof initOAuth == "function") {
        initOAuth({
          clientId: "your-client-id",
          realm: "your-realms",
          appName: "your-app-name"
        });
      }

      $('pre code').each(function(i, e) {
        hljs.highlightBlock(e)
      });

      addApiKeyAuthorization();
    },
    onFailure: function(data) {
      log("Unable to Load SwaggerUI");
    },
    docExpansion: "none",
    apisSorter: "alpha",
    showRequestHeaders: true
  });

  function addApiKeyAuthorization(){
    var key = encodeURIComponent($('#input_apiKey')[0].value);
    if(key && key.trim() != "") {
        window.swaggerUi.api.clientAuthorizations.add("X-My-Header", new SwaggerClient.ApiKeyAuthorization("X-My-Header", "test value", "header"));
        window.swaggerUi.api.clientAuthorizations.add("Authorization", new SwaggerClient.ApiKeyAuthorization("Authorization", key, "header"));
        log("added key " + key);
    }
  }

  $('#input_apiKey').change(addApiKeyAuthorization);

  // if you have an apiKey you would like to pre-populate on the page for demonstration purposes...
  /*
    var apiKey = "myApiKeyXXXX123456789";
    $('#input_apiKey').val(apiKey);
  */

  window.swaggerUi.load();

  function log() {
    if ('console' in window) {
      console.log.apply(console, arguments);
    }
  }

如您所见,我添加了两个标头,但只有第一个标头随请求一起发送。如果我反转它们,那么另一个将被发送,但我从未同时发送过这两个。文档非常简单,说明:

注意!您可以在单个请求上传递多个标头参数,只需为它们使用唯一名称(上面的示例中使用了key)。

需要明确的是,这两个标头都添加到Access-Control-Allow-Headers中,并且两者都可以由服务器单独接收,情况是我无法将它们一起发送。

问题是:有人知道如何应对吗?

(还有一个重要的假设,这些头文件对于我的所有api都是全局的,所以我想把它们直接放在swagger ui中,而不是记录每个api方法)。

共有1个答案

丁宏盛
2023-03-14

这是一个错误。此处描述了快速修复:https://github.com/swagger-api/swagger-ui/issues/1374

可以关闭问题。

 类似资料:
  • 我正在使用集成Apigee门户中生成的swagger 2.0创建一个swagger UI。 我试图让oaut2客户端凭据(在swagger 2.0中称为应用程序)流在UI的“试用”部分工作。 请注意,来自用户的输入是客户端 ID 和机密,而不是令牌。 当我尝试授权 get 操作并发送请求时,我可以看到 UI 的 curl 表示形式中,Authorization 标头表示为“Authorizatio

  • 我在java中使用swagger。 我正在通过代码中的requestAttributes读取一个名为callerId的头。我没有在注释@HeaderParam中使用标题。 由于这个原因,标题部分没有显示在大摇大摆的UI中进行试用。 如何在试用表中显示此标题。 有没有什么方法可以在不对头值进行硬编码的情况下实现这一点? 提前感谢。

  • 我们的项目为一个API使用多个swagger文件,但swagger codegen似乎只接受一个。在这种情况下,我们如何使用swagger codegen生成代码?

  • 我正在尝试用tweepy制作一个Twitter机器人。这实际上是我的第一个推特BOT,我对它有点陌生。 我有一个媒体列表,其中包含我需要发送的每个图像的路径。我可以用文本发送推文 或通过单一媒体发送推文 但是我需要用我的推文发送许多图像。我听说我需要先上传我的文件,但我不知道如何将它们集成到推文中。或者也许有另一种方法可以做到这一点?

  • 我已经使用SpringFox build将集成到我的Spring Boot项目中,它适用于我的GET API。但是,在我的POST API(它需要格式的请求)中,swagger-ui没有设置头。 这个问题与这个帖子类似,但没有解决方案,任何帮助都很感谢。

  • 对于一个nodejs项目,我正在使用swagger ui express和swagger jsdocs作为swagger API。当我尝试使用Swagger调用应用程序的POSTendpoint时,没有使用发送数据。有什么问题吗?我的全部相关代码如下: Swagger正在执行get请求,但在发送数据时,d标志为空。有人有主意吗? 最好的问候