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.sync_base import BaseClient
class RealClient(Client):
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.sync_base import Client
class RealClient(Client):
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.sync_base.Client
todataclass_rest.async_base.AsyncClient
- Add
async
keyword to your methods
Configuring
- Override
_init_factory
or_init_args_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. args_factory
can be configured with scehmas for every argument type.
They are awailable asargs_class
of original method. E.gRealClient.get_todo.args_class
- Custom error handlers can be set adding them to
error_handlers
usingadd_handler
method
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.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb93224962a7b6fbc20e46801af2b166da01fc7316f72fa6c742a1d2e1adb82d |
|
MD5 | 863c59c364588d34c5508f08917f5cf5 |
|
BLAKE2b-256 | e867cead5b835d6aecc6fc381de8811cbbfdf1a164b0fe94a49731f62a1e6157 |