Skip to main content
openapi-client-axios logo

openapi-client-axiosGitHub

CI npm version npm downloads GitHub stars bundle size License 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

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 tool called typegen to generate typescript type files (.d.ts) for OpenAPIClient instances using an OpenAPI definition file.

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

The output file exports a type called Client, which can directly be used with instances created with OpenAPIClientAxios.

import type { Client as PetStoreClient } from "./openapi.d.ts";

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