0.4.0 • Published 19 days ago

apiverse v0.4.0

Weekly downloads
-
License
MIT
Repository
github
Last release
19 days ago

apiverse

npm version bundle

apiverse provides a unified way to manage all your API interactions by setting up a client with default fetch options, such as the API base URL and headers. Adapters extend the client with a variety of features to match your favorite API management flavor.

You can use one of the pre-built adapters to get started quickly, or create your own custom adapter to meet your specific requirements.

Setup

!TIP(https://apiverse.byjohann.dev)

# pnpm
pnpm add -D apiverse

# npm
npm i -D apiverse

Usage

!TIP(https://apiverse.byjohann.dev)

ofetch Adapter

import { createClient, ofetch } from 'apiverse'

const baseURL = '<your-api-base-url>'
const adapter = ofetch()
const api = createClient({ baseURL }).with(adapter)

// GET request to <baseURL>/users/1
await api('users/1', { method: 'GET' })

What it does:

The ofetch adapter wraps ofetch to handle API calls.

apiRouteBuilder Adapter

import { apiRouteBuilder, createClient } from 'apiverse'

const baseURL = '<your-api-base-url>'
const adapter = apiRouteBuilder()
const api = createClient({ baseURL }).with(adapter)

// GET request to <baseURL>/users/1
await api.users.get(1)
// POST request to <baseURL>/users with payload
await api.users.post({ name: 'foo' })

What it does:

The apiRouteBuilder adapter provides a jQuery-like and Axios-esque API for building and making API calls. It allows you to construct your API calls in a declarative way.

OpenAPI Adapter

import { OpenAPI, createClient } from 'apiverse'

const baseURL = 'https://petstore3.swagger.io/api/v3'
// Pass pre-generated schema type ID to adapter
const adapter = OpenAPI<'petStore'>()
const api = createClient({ baseURL }).with(adapter)

// Typed parameters and response
const response = await api('/user/{username}', {
  method: 'GET',
  path: { username: 'user1' },
})

What it does:

If your API has an OpenAPI schema, apiverse can use it to generate types for you, which the OpenAPI adapter then consumes to provide type-safe API calls.

For example, the response returned by the API call on the left is typed as follows:

const response: {
  id?: number
  username?: string
  // …
}

Please follow the OpenAPI adapter documentation to learn more about how to generate TypeScript definitions from your OpenAPI schema files.

Outlook & Roadmap

As of right now, this library handles API management in the client. In the future, apiverse is intended to extend to the server side as well, providing a unified way to manage API calls in both client and server.

Development

  • Clone this repository
  • Install latest LTS version of Node.js
  • Enable Corepack using corepack enable
  • Install dependencies using pnpm install
  • Run interactive tests using pnpm dev

License

Made with 💛

Published under MIT License.

0.4.0

19 days ago

0.3.1

19 days ago

0.3.0

20 days ago

0.2.0

20 days ago

0.1.3

2 months ago

0.1.2

2 months ago

0.1.1

3 months ago

0.1.0

3 months ago