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);
}
Type safe clients
openapi-client-axios
comes with a tool called typegen
to generate typescript type files (.d.ts) for
OpenAPIClient instances using an OpenAPI definition file.
npx openapi-client-axios-typegen ./openapi.yaml > src/types/openapi.d.ts
The output file exports a type Client
, which can directly be used with instances created with OpenAPIClientAxios
.
import { Client as PetStoreClient } from './openapi.d.ts';
const client = await api.getClient<PetStoreClient>();
Contributing
OpenAPI Client Axios is Free and Open Source Software. Issues and pull requests are more than welcome!