tiny-api-client
v0.0.4
Published
The short and sweet way to write API consumers
Downloads
2
Maintainers
Readme
Tiny API Client for TypeScript 🐝
[!WARNING] This package is in early development, and its API is still changing quite often. Use in production at your own risk. On the other hand, contributions are more than welcome.
The short and sweet way to write API consumers
import { APIClient, get, post, del } from 'tiny-api-client';
@APIClient(({v}) => `https://example.org/api/public/v${v}`)
class MyAPIClient {
@get(({userId}) => `/users/${userId}`)
findUser(params: {userId: string}, options: any = {}, response?: User) {
return response;
}
@post(() => '/notes')
createNote(params: {}, options: any, response?: Note) {
return response;
}
@del(({noteId, fileId}) => `/notes/${noteId}/files/${fileId}`)
deleteNoteFile(params: {noteId: string, fileId: string}, options: any, response?: boolean) {
return response;
}
}
>> const client = new MyClient()
>> client.findUser({userId: 'PeterParker'})
{'name': 'Peter', 'surname': 'Parker', ...}
>> client.createNote({}, {body: {title: 'New Note', content: 'Hello World!'}})
{'id': ...}
About
This package is my TypeScript adaptation of the tiny-api-client library I originally wrote for Python. Its purpose is to provide an easy way for API consumers, such as Vue or React frontends, to call operations on the API. Note that there are significant differences between the Python and TS interfaces. Furthermore, some of the features that exist in the Python library do not exist in this one yet. Some features may present bugs.
Requirements
If you are using Node.js:
- Node.js >=18.x (requires Fetch API)
Features
- Endpoints can be declared with one of:
@get
,@post
,@put
,@patch
,@del
- Auto-conversion of responses to JSON, can be disabled per endpoint
- Route parameters are optional
- Set the
.apiToken
property to send a bearer token - Easy integration with your custom API models
- Full control over route parameter templates
- Support for API version insertion in url template
- Freedom over parameter types and defaults in each endpoint
- Wraps the native
fetch
api, and options are passed to it
Installation
bun add tiny-api-client
Feel free to use npm, yarn, or other instead
Documentation
The documentation is still not available.
License
This software is distributed under the Lesser General Public License v2.1, more information available at the Free Software Foundation.