0.0.4 • Published 3 months ago

tiny-api-client v0.0.4

Weekly downloads
-
License
LGPL-2.1
Repository
github
Last release
3 months ago

Tiny API Client for TypeScript 🐝

NPM Registry License: GPL  v2

!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

License: LGPL  v2.1

This software is distributed under the Lesser General Public License v2.1, more information available at the Free Software Foundation.

0.0.3

3 months ago

0.0.4

3 months ago

0.0.2

3 months ago

0.0.1

3 months ago