Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/falsedev/instant-api-client

Create API wrappers/clients in minutes, enjoying both blocking and async interfaces from one codebase!
https://github.com/falsedev/instant-api-client

api client python

Last synced: about 1 month ago
JSON representation

Create API wrappers/clients in minutes, enjoying both blocking and async interfaces from one codebase!

Awesome Lists containing this project

README

        

# Introduction

If you've ever tried to make an API wrapper
you probably know that the code written can
only be used as sync or async, well, not anymore.

## Features

- **Lightweight**: Extremely lightweight and minimal
- **Easy to use**: Implement features in no time with the
- **Async and blocking**: Provides both async and blocking calls
- **Test without a server**: Since the library internally uses httpx, it can be used to test itself using an `ASGI` or `WSGI` application.
- **DRY**: _Don't repeat yourself_, helps avoid code duplication and write reusable code
- **Routing**: An `APIRouter` class with simliar API to `APIClient`
- **Modular**: Create reusable routers that can be added to any client, independant of each other

## Example Usage

```py

from apiclient import APIClient, endpoint, Post

class CodeExecClient(APIClient):
base_url = "https://pathtomysite.com/api/1.0" # Note the missing / suffix
@endpoint
def run(self, language:str, code:str):
# Do any processing with the data here!
# Also note the / prefix in the url
return Post("/execute", params={'lang':language, 'code':code})

# Using the API client
from httpx import Client
client = CodeExecClient(session=Client())
response = client.run("py", "print('hello world!')")

```

## Documentation is under works