如何在 Swagger-UI 上加载私有 GitHub 存储库中托管的文件

How to load a file hosted in a private GitHub repository on Swagger-UI

我想使用 swagger-ui 在私人网站上托管我的 swagger API 的文档。

YAML 文件托管在私有 GitHub 存储库中。根据此 gist,我使用 curl 命令行成功检索到所需的文件,但我无法尝试使用 swagger-ui:

window.swaggerUi = new SwaggerUi({
  url: 'https://api.github.com/repos/me/my_repo/contents/api.yaml',
  authorizations: {
    'Authorization': 'token 0123456789',
    'Accept': 'application/vnd.github.v3.raw'
  },
  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();

我收到一个错误:

http.js:296 Uncaught TypeError: auth.apply is not a function

有什么建议吗?

答案如下:(请注意,它不适用于 YAML 文件。仅 JSON。)

  // spec: content,
  window.swaggerUi = new SwaggerUi({
   url: 'https://api.github.com/repos/me/my_repo/contents/api.json',
    authorizations: {
      'Accept': new window.SwaggerClient.ApiKeyAuthorization("Accept", "application/vnd.github.v3.raw", "header"),
      'Authorization': new window.SwaggerClient.ApiKeyAuthorization("Authorization", "token 0123456789", "header"),
    },
    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 : ", data);
    },
    docExpansion: "none",
    jsonEditor: false,
    defaultModelRendering: 'schema',
    showRequestHeaders: false,
  });