NodeJS and Browser API client. In order to use with NodeJS please pick you favorite Fetch API polyfill library like cross-fetch.
- Uses Fetch API (requires fetch polyfill for NodeJS)
- Automatic transforms for JSON/Form data. Also, supports any custom data transformation
- TypeScript support
- Retry mechanism
- Request and Response middlewares
Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ |
Using yarn:
$ yarn add apidly
Using npm:
$ npm install apidly
import 'cross-fetch/polyfill';
import { createClient, createEndpoint } from 'apidly';
const client = createClient({ base: 'https://api.example.com' });
interface Post {
id: string;
title: string;
content: string;
}
const postsListEndpoint = createEndpoint<Post[]>('/api/v1/posts');
export const listPosts = () => client(postsListEndpoint);
import { createClient, createEndpoint, formRequest, ApidlyRequest } from '../index';
import { getAccessToken } from './authorization';
const client = createClient({
base: 'https://api.example.com',
headers: { locale: 'en_US' }, // default client's headers
requestType: formRequest, // use form-urlencoded request type
maxRetries: 3, // additional retries count
}).request(async (url: URL, request: ApidlyRequest) => {
// custom request middleware with authentication
const token = await getAccessToken();
request.headers.set('authorization', `Bearer ${token}`);
});
interface Post {
id: string;
title: string;
content: string;
}
interface UpdatePostParams {
id: string;
}
interface UpdatePostData {
title: string;
content: string;
}
const postsUpdateEndpoint = createEndpoint<Post, UpdatePostParams, UpdatePostData>('/api/v1/posts/{id}', { method: 'put' });
export function updatePost(id: string, post: UpdatePostData) {
return client(postsUpdateEndpoint, { params: { id }, data: post });
}
License Apache-2.0 Copyright (c) 2021-present Ivan Zakharchanka