Http client base pydantic, with requests or aiohttp
Project description
pydantic-client
Http client base pydantic, with requests, aiohttp and httpx.
How to install
only support
requests
:pip install pydantic-client
support
aiohttp
andrequests
:pip install "pydantic-client[aiohttp]"
support
httpx(async)
andrequests
:pip install "pydantic-client[httpx]"
support all:
pip install "pydantic-client[all]"
How to use
from pydantic import BaseModel
from pydantic_client import delete, get, post, put
from pydantic_client.clients.requests import RequestsClient
class Book(BaseModel):
name: str
age: int
class R(RequestsClient):
@get("/books/{book_id}?query={query}")
def get_book(self, book_id: int, query: str) -> Book:
...
@post("/books", form_body=True)
def create_book_form(self, book: Book) -> Book:
""" will post the form with book"""
...
@put("/books/{book_id}")
def change_book(self, book_id: int, book: Book) -> Book:
"""will put the json body"""
...
@delete("/books/{book_id}")
def change_book(self, book_id: int) -> Book:
...
my_client = R("http://localhost/v1")
get_book: Book = my_client.get_book(1)
The Group
from pydantic_client import Group
from pydantic_client.clients.requests import RequestsClient
group = Group("/book")
person_group = Group("/person")
class GroupClient(RequestsClient):
def __init__(self):
super().__init__("http://localhost")
@group.get("/{book_id}")
def get(self, book_id: int) -> Book: # type: ignore
...
@person_group.get("/{person_id}")
def get_person(self, person_id: int) -> Person: # type: ignore
...
client = GroupClient()
book = client.get(1)
person = client.get_person(1)
change log
v0.1.14: add global or request level headers
# global level headers
my_client = R("http://localhost/v1", headers={"Authorization": "xxxxxxx"})
# request level headers, and its priority is higher than global.
# header should be xxxxxxx
my_client.delete(1)
# header should be zzzzz
my_client.get(1, request_headers={"Authorization": "zzzzz"})
# header should be yyyyy
my_client.post(1, request_headers={"Authorization": "yyyyy"})
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pydantic_client-0.1.15.tar.gz
(9.4 kB
view hashes)
Built Distribution
Close
Hashes for pydantic_client-0.1.15-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72bb434557011d890ca3bf7128e9d1dbe3e6f21eac0363733a759e56c81ffc46 |
|
MD5 | 58dc3bb5c8014b7202e0e590efaf6654 |
|
BLAKE2b-256 | 5724f99ffe5d50af1a8af474843d396a496c6e09a704dd8d95f35bbe329f616d |