Skip to content

Automatically generates an API client on top of Axios using Swagger JSON document and uses its schema for input validation

License

Notifications You must be signed in to change notification settings

d4n5h/swagger-client-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Swagger API Client Builder

Automatically generate an API client on top of Axios using Swagger document.

Basically using the Swagger document to generate a client in reverse.

Features

  • Uses operationIds for function names.

  • Optionally it can use the Swagger schema for input validation.

  • Automatically converts the body to the correct content-type, but you can manually override it by defining the content-type in the axios request options.

  • If the protocol, host and base path are defined then it will use them as baseURL, but you can manually override it by defining the baseURL in the axios config.

  • Supports Swagger v2 and OpenAPI v3.

  • Can be installed as a global package and export a standalone API client via the CLI.

  • CLI can export both JavaScript and TypeScript.

Caveats

  • operationId property is required for all paths.

Install

npm install swagger-client-builder

Or

yarn add swagger-client-builder

CLI

You can install the package globally using:

npm i swagger-client-builder -g

Usage

Usage: swagger-client-builder -i <input> -o <output> [options]
Options:

  -i, --input           Input swagger file path or URL (.json or .yaml or .yml)
  -o, --output          Output file path (.js or .ts)
  -v, --validation      Use jsonschema validation
  -e, --es              Use ES module import instead of CommonJs
  -t, --ts              Use TypeScript instead of JavaScript
  -s, --silent          Silent export (just export without prompts but will show errors)
  -T, --target          Target output ("file" or "bash")
  -V, --version         Show version

CLI Examples

Export to JavaScript with ES imports
swagger-client-builder -i https://petstore3.swagger.io/api/v3/openapi.json -o ./path/to/output.js -v -e
Export to JavaScript with CommonJs requires
swagger-client-builder -i https://petstore3.swagger.io/api/v3/openapi.json -o ./path/to/output.js -v
Export to TypeScript
swagger-client-builder -i https://petstore3.swagger.io/api/v3/openapi.json -o ./path/to/output.ts -v -t

Code Example

const SwaggerClientBuilder = require("swagger-client-builder");

async function main() {
    try {

        const swaggerFile = 'https://petstore3.swagger.io/api/v3/openapi.json'; // Or use file path

        const Client = new SwaggerClientBuilder(swaggerFile, {
            // Optional: Axios instance config
            baseURL: 'https://petstore3.swagger.io/api/v3'
        })

        await Client.build();

        const response = await Client.getPetById({
            params: { petId: 1 }
            /*
            query:{},
            body:{},

            // Axios request options
            options:{
                headers:{...}
            }
            */
        });

        console.log(response.data);


        // You can also export the client to a file from code
        await Client.export('./client.js',{
            validation: true,
        });

    } catch (error) {
        console.log(error);
    }
}

main();

About

Automatically generates an API client on top of Axios using Swagger JSON document and uses its schema for input validation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published