【问题标题】:loading multiple json files in swagger-ui index.html在 swagger-ui index.html 中加载多个 json 文件
【发布时间】:2016-07-06 21:33:25
【问题描述】:

我有 2 个 json 文件。为了静态服务,我被告知为每个 json 内容创建一个不同的变量,然后在 url:url 下方添加这些变量。我的目标是在主页上有 2 个按钮,选项 1 和选项 2。单击选项 1 应加载 spec swagger 内容,单击选项 2 应加载 spec2 swagger 内容。有什么简单的方法可以做到这一点?

索引.html:

<script type="text/javascript">
    $(function () {

var spec={
Json stuff goes here
}

var spec2={
Json stuff for #2 goes here
}

这是同一文件中的招摇部分。现在只有 spec get 最初被加载。

var url = window.location.search.match(/url=([^&]+)/);
  if (url && url.length > 1) {
    url = decodeURIComponent(url[1]);
  } else {
    url = "http://petstore.swagger.io/v2/swagger.json";
  }

  hljs.configure({
    highlightSizeThreshold: 5000
  });

  // Pre load translate...
  if(window.SwaggerTranslator) {
    window.SwaggerTranslator.translate();
  }
  window.swaggerUi = new SwaggerUi({
    url: url,
    spec: spec,  // Here is where I call the variables
    spec2: spec2
    dom_id: "swagger-ui-container",
    supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
    onComplete: function(swaggerApi, swaggerUi){
      if(typeof initOAuth == "function") {
        initOAuth({
          clientId: "your-client-id",
          clientSecret: "your-client-secret-if-required",
          realm: "your-realms",
          appName: "your-app-name",
          scopeSeparator: ",",
          additionalQueryStringParams: {}
        });
      }

      if(window.SwaggerTranslator) {
        window.SwaggerTranslator.translate();
      }
    },
    onFailure: function(data) {
      log("Unable to Load SwaggerUI");
    },
    docExpansion: "none",
    jsonEditor: false,
    defaultModelRendering: 'schema',
    showRequestHeaders: false
  });

  window.swaggerUi.load();

  function log() {
    if ('console' in window) {


         console.log.apply(console, arguments);
        }
      }
  });
  </script>
</head>

【问题讨论】:

    标签: javascript html json rest swagger


    【解决方案1】:

    您所描述的可能是最简单的方法。只需编辑您的index.html 以获得一个按钮,然后触发 swagger-ui 的加载事件

    首先,创建两个容器:

    <div id="swagger-ui-container-1" class="swagger-ui-wrap"></div>
    <div id="swagger-ui-container-2" class="swagger-ui-wrap"></div>
    

    接下来,创建两个 swagger 对象并将它们分配给每个容器:

      // create swagger_1, do the same with swagger_2
    
      var swagger_1 = new SwaggerUi({
        url: url,
        dom_id: "swagger-ui-container-1",
        supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
        onComplete: function(swaggerApi, swaggerUi){
          swaggerApi.setBasePath('/foo');
        },
        onFailure: function(data) {
          log("Unable to Load SwaggerUI");
        },
        docExpansion: "none",
        jsonEditor: false,
        apisSorter: "alpha",
        defaultModelRendering: 'schema',
        showRequestHeaders: false
      });
    

    最后,在一个数组中保留对它们的引用,并对它们中的每一个调用 load:

      window.apis = [swagger_1, swagger_2];
      window.apis[0].load();
    

    【讨论】:

    • 是的,我该怎么做呢?我加载 window.swaggerUi.load();还是显示内容的 div id="swagger-ui-container" class="swagger-ui-wrap">
  • 用详细信息编辑了我的回复
  • 猜你喜欢
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    相关资源
    最近更新 更多