Skip to content

JavaScript client library for consuming OpenAPI-enabled APIs with axios

License

Notifications You must be signed in to change notification settings

openapistack/openapi-client-axios

Repository files navigation

openapi-client-axios

CI License npm version npm downloads bundle size Libraries.io dependency status for latest release npm type definitions Buy me a coffee

JavaScript client library for consuming OpenAPI-enabled APIs with axios. Types included.

Features

  • Create API clients from OpenAPI v3 definitions
  • Client is configured in runtime. No generated code!
  • Generate TypeScript definitions (.d.ts) for your APIs with full IntelliSense support
  • Easy to use API to call API operations using JavaScript methods
    • client.getPet(1)
    • client.searchPets()
    • client.searchPets({ ids: [1, 2, 3] })
    • client.updatePet(1, payload)
  • Built on top of the robust axios JavaScript library
  • Isomorphic, works both in browser and Node.js

Documentation

New! OpenAPI Client Axios documentation is now found on openapistack.co

https://openapistack.co/docs/openapi-client-axios/intro

Quick Start

npm install --save axios openapi-client-axios
yarn add axios openapi-client-axios

With promises / CommonJS syntax:

const OpenAPIClientAxios = require('openapi-client-axios').default;

const api = new OpenAPIClientAxios({ definition: 'https://example.com/api/openapi.json' });
api.init()
  .then(client => client.getPetById(1))
  .then(res => console.log('Here is pet id:1 from the api', res.data));

With async-await / ES6 syntax:

import OpenAPIClientAxios from 'openapi-client-axios';

const api = new OpenAPIClientAxios({ definition: 'https://example.com/api/openapi.json' });
api.init();

async function createPet() {
  const client = await api.getClient();
  const res = await client.createPet(null, { name: 'Garfield' });
  console.log('Pet created', res.data);
}

Typesafe Clients

TypeScript IntelliSense

openapi-client-axios comes with a CLI command openapicmd typegen to generate Typescript types for type safety and code autocomplete.

npx openapicmd typegen ./openapi.yaml > src/types/openapi.d.ts

The output of typegen exports a type called Client, which can be used for instances created with OpenAPIClientAxios.

Both the api.getClient() and api.init() methods support passing in a Client type.

import { Client as PetStoreClient } from './client.d.ts';

const client = await api.init<PetStoreClient>();
const client = await api.getClient<PetStoreClient>();

openapicmd typegen supports using both local and remote URLs for OpenAPI definition files.

$ npx openapicmd typegen ./petstore.yaml
$ npx openapicmd typegen https://petstore3.swagger.io/api/v3/openapi.json

Commercial support

For assistance with openapi-client-axios in your company, reach out at [email protected].

Contributing

OpenAPI Client Axios is Free and Open Source Software. Issues and pull requests are more than welcome!