Web-Library for Python
Project description
WApi: Library to simplify api development
Libraries used:
Features
- Routes
- Serialization
- Asynchrony
- Request Params
- Smart substitution
Installation
You can install the latest version with the command:
pip install whaox-wapi
• Routes
You can create paths as you like, splitting your api-client into modules
@Route("https://example.com")
class WApi:
service = Service()
@Route("/wapi")
class Service:
@Route("/path")
@GET("/")
def get(self): pass
@POST("/path")
def post(self): pass
wapi = WApi()
wapi.service.get()
# eq
requests.get("https://example.com/wapi/path")
• Serialization
The library deserializes the received data according to the type that you specify in the
_T
parameter of the decorator.NOTE: The specified type must be json serializable - these are the base types and classes marked with the
@dataclass
annotation
@dataclass
class Person:
name: str
@Route("https://example.com")
class WApi:
@GET("/person", _T=Person)
def person(self) -> Person: pass
@GET("/people", _T=List[Person])
def people(self) -> List[Person]: pass
api = WApi()
person = api.person()
print(person.name)
>>> "John"
• Asynchrony
You can make the query asynchronous simply by adding an
async
keyword.
@Route("https://example.com")
class WApi:
@GET("/person")
async def person(self): pass
person = await api.person(params={"id": 1})
• Request Params
You can flexibly add parameters to request passing relevant attributes.
@dataclass
class GetPersonRequest:
id: int
@dataclass
class CreatePersonRequest:
name: str
@Route("https://example.com")
class WApi:
@POST("/person")
def create_person(self, body: dict): pass
@Route("/person")
@GET("/")
def person(self, params: GetPersonRequest | dict): pass
api.person(params={"id": 1})
api.create_person(body={"name": "john"})
# or
api.person(params=GetPersonRequest(1))
api.create_person(params=CreatePersonRequest("john"))
• • Smart substitution
The library understands what variables you used during formatting and will not substitute them into the path parameters.
@dataclass
class GetPersonRequest:
id: int
preview: bool
@Route("https://example.com")
class WApi:
@Route("/person")
@GET("/{id}")
def person(self, params: GetPersonRequest): pass
person = api.person(params=GetPersonRequest(1, true))
# eq
person = requests.get("https://example.com/person/1?preview=true")
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
File details
Details for the file whaox-wapi-1.1.5.tar.gz
.
File metadata
- Download URL: whaox-wapi-1.1.5.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0ff7940e16894cbdfc4fc6ccb45fda24b8a56dc2aac70aadbb7d1bcd7da77af |
|
MD5 | 4cf6ee21843a1592473936fe307a1b3e |
|
BLAKE2b-256 | 8b0ce14bad01b7e623fdc8a9cb22ca27b14de9f888d530cf8bf486795398469f |