Skip to content

Mechanism to override host, basePath and scheme for OpenAPI 2.x definitions #5981

Open
@char0n

Description

@char0n

Q&A (please complete the following information)

  • Method of installation: [npm, dist assets]
  • Swagger-UI version: [>=3.25.1]
  • Swagger/OpenAPI version: [Swagger 2.0]

Content & configuration

Swagger/OpenAPI definition:
https://petstore.swagger.io/v2/swagger.json

Swagger-UI configuration options:

const UrlMutatorPlugin = (system) => ({
  rootInjects: {
    setScheme: (scheme) => {
      const jsonSpec = system.getState().toJSON().spec.json;
      const schemes = Array.isArray(scheme) ? scheme : [scheme];
      const newJsonSpec = Object.assign({}, jsonSpec, { schemes });

      return system.specActions.updateJsonSpec(newJsonSpec);
    },
    setHost: (host) => {
      const jsonSpec = system.getState().toJSON().spec.json;
      const newJsonSpec = Object.assign({}, jsonSpec, { host });

      return system.specActions.updateJsonSpec(newJsonSpec);
    },
    setBasePath: (basePath) => {
      const jsonSpec = system.getState().toJSON().spec.json;
      const newJsonSpec = Object.assign({}, jsonSpec, { basePath });

      return system.specActions.updateJsonSpec(newJsonSpec);
    }
  }
});

window.ui = SwaggerUI({
  dom_id: '#myDomId',
  plugins: [
    UrlMutatorPlugin,
  ],
  onComplete: () => {
    // this will set appropriate data when swagger-ui ready
    window.ui.setScheme('http');
    window.ui.setHost('www.google.com');
    window.ui.setBasePath('v3');
  }   
})

Gist where UrlMutatorPlugin will be maintained until fully verified that it satisfy the community usecases:

https://gist.github.com/char0n/3b6005c187a4bb771a27705d123af6cd

How can we help?

This issue is not about requesting support, but more about giving one. It consolidates all other issues that have been created around this topics.

Related issues

swagger-api/swagger-js#1095
swagger-api/swagger-js#1027
swagger-api/swagger-js#532
swagger-api/swagger-js#1045
#3042

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions