Better handler parameters for APIStar (and pydantic support).
General usage is working as expected but documentation and OpenAPI schema aren’t done yet.
$ pip install apistar-pydantic
Usage
from apistar import App
from pydantic import BaseModel
from apistar_pydantic import (
QueryParam, PathParam, DictBodyData, DictQueryData,
PydanticBodyData as BodyData,
PydanticQueryData as QueryData,
Route, components,
)
#
# Declare models
#
class City(BaseModel):
"""City info"""
name: str
population: int
class Computer(BaseModel):
"""Computer info"""
model: str
price: float
class ComputerCity(City, Computer):
"""A computer in a city"""
#
# Create views
#
def resource_complete(param1: QueryParam[str],
param2: QueryParam[int],
param3: DictBodyData[dict],
param4: DictQueryData[dict]):
return repr(locals())
def resource_query(city: QueryData[City]):
return "%s has %d citizens." % (city.name, city.population)
def resource_body(computer: BodyData[Computer]):
return "%s costs R$ %.2f" % (computer.model, computer.price)
def resource_mixed(city: QueryData[City],
computer: BodyData[Computer]):
return ComputerCity(**city.dict(), **computer.dict())
#
# Start the app
#
app = App(
routes=[
Route('/resource', 'GET', resource_query),
Route('/resource_query', 'GET', resource_query),
Route('/resource_body', 'POST', resource_body),
Route('/resource_mixed', 'POST', resource_mixed),
],
components=[
*components
]
)
if __name__ == '__main__':
app.serve('127.0.0.1', 3000, debug=True)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
apistar-pydantic-0.1.0.tar.gz
(196.7 kB
view details)
File details
Details for the file apistar-pydantic-0.1.0.tar.gz.
File metadata
- Download URL: apistar-pydantic-0.1.0.tar.gz
- Upload date:
- Size: 196.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bdd429465b307c91ad5e196b3364c805747b2bf3d8159830f6b364a23641c040
|
|
| MD5 |
a140b1c1b5bf5f12e93030724d9524c6
|
|
| BLAKE2b-256 |
f500396c536aee6facfba53fd67c1cfc5e17f5511773e99f80ff772d22ce063f
|