An utility for writing simple clients for REST like APIs
Project description
Dataclass REST
A modern and simple way to create clients for REST like APIs
Quickstart
Step 1. Install
pip install dataclass_rest requests
Step 2. Declare models
@dataclass
class Todo:
id: int
user_id: int
title: str
completed: bool
Step 3. Create and configure client
from requests import Session
from dataclass_rest.http.requests import RequestsClient
class RealClient(RequestsClient):
def __init__(self):
super().__init__("https://example.com/api", Session())
Step 4. Declare methods using get
/post
/delete
/patch
/put
decorators.
Type hints are required. Body of method is ignored.
Use any method arguments to format URL.
body
argument is sent as request body with json. Other arguments, not used in URL are passed as query parameters.
get
and delete
does not have body.
from typing import Optional, List
from requests import Session
from dataclass_rest import get, post, delete
from dataclass_rest.http.requests import RequestsClient
class RealClient(RequestsClient):
def __init__(self):
super().__init__("https://example.com/api", Session())
@get("todos/{id}")
def get_todo(self, id: str) -> Todo:
pass
@get("todos")
def list_todos(self, user_id: Optional[int]) -> List[Todo]:
pass
@delete("todos/{id}")
def delete_todo(self, id: int):
pass
@post("todos")
def create_todo(self, body: Todo) -> Todo:
"""Создаем Todo"""
Asyncio
To use async client insted of sync:
- Install
aiohttp
(instead ofreuests
) - Change
dataclass_rest.http.requests.RequestsClient
todataclass_rest.http.aiohttp.AiohttpClient
- Add
async
keyword to your methods
Configuring
- Override
_init_request_body_factory
,_init_request_args_factory
and_init_response_body_factory
to provide dataclass factory with required settings
(see datacass_factory). - You can use different body argument name if you want. Just pass
body_name
to the decorator. - To create dataclass-factory serialization schema for specific method query params (supposing that they all passed in a single TypedDict) create a method returning it and decorate with
@yourmethod.query_params_schema
. - Custom error handlers can be set using
@yourmethod.on_error
decorator in your class
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for dataclass_rest-0.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c82cac1544feafa5fe1cec55f756ab3c2a2cc261891b469629bc00c940913d6c |
|
MD5 | 06959f6cd23c45a5ca9d278c61ecde6a |
|
BLAKE2b-256 | 429890c0abfc1fe612244e59c155164f59270140633cc46fa0caca72b4010c5e |