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.
- 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
ASGIorWSGIapplication. - DRY: Don't repeat yourself, helps avoid code duplication and write reusable code
- Routing: An
APIRouterclass with simliar API toAPIClient - Modular: Create reusable routers that can be added to any client, independant of each other
fromapiclientimportAPIClient, endpoint, PostclassCodeExecClient(APIClient):
base_url="https://pathtomysite.com/api/1.0"# Note the missing / suffix@endpointdefrun(self, language:str, code:str):
# Do any processing with the data here!# Also note the / prefix in the urlreturnPost("/execute", params={'lang':language, 'code':code})
# Using the API clientfromhttpximportClientclient=CodeExecClient(session=Client())
response=client.run("py", "print('hello world!')")