4 changed files with 132 additions and 8 deletions
@ -0,0 +1,54 @@ |
|||
from dataclasses import field # (1) |
|||
|
|||
from fastapi import FastAPI |
|||
from pydantic.dataclasses import dataclass # (2) |
|||
|
|||
|
|||
@dataclass |
|||
class Item: |
|||
name: str |
|||
description: str | None = None |
|||
|
|||
|
|||
@dataclass |
|||
class Author: |
|||
name: str |
|||
items: list[Item] = field(default_factory=list) # (3) |
|||
|
|||
|
|||
app = FastAPI() |
|||
|
|||
|
|||
@app.post("/authors/{author_id}/items/", response_model=Author) # (4) |
|||
async def create_author_items(author_id: str, items: list[Item]): # (5) |
|||
return {"name": author_id, "items": items} # (6) |
|||
|
|||
|
|||
@app.get("/authors/", response_model=list[Author]) # (7) |
|||
def get_authors(): # (8) |
|||
return [ # (9) |
|||
{ |
|||
"name": "Breaters", |
|||
"items": [ |
|||
{ |
|||
"name": "Island In The Moon", |
|||
"description": "A place to be playin' and havin' fun", |
|||
}, |
|||
{"name": "Holy Buddies"}, |
|||
], |
|||
}, |
|||
{ |
|||
"name": "System of an Up", |
|||
"items": [ |
|||
{ |
|||
"name": "Salt", |
|||
"description": "The kombucha mushroom people's favorite", |
|||
}, |
|||
{"name": "Pad Thai"}, |
|||
{ |
|||
"name": "Lonely Night", |
|||
"description": "The mostests lonliest nightiest of allest", |
|||
}, |
|||
], |
|||
}, |
|||
] |
|||
@ -0,0 +1,55 @@ |
|||
from dataclasses import field # (1) |
|||
from typing import Union |
|||
|
|||
from fastapi import FastAPI |
|||
from pydantic.dataclasses import dataclass # (2) |
|||
|
|||
|
|||
@dataclass |
|||
class Item: |
|||
name: str |
|||
description: Union[str, None] = None |
|||
|
|||
|
|||
@dataclass |
|||
class Author: |
|||
name: str |
|||
items: list[Item] = field(default_factory=list) # (3) |
|||
|
|||
|
|||
app = FastAPI() |
|||
|
|||
|
|||
@app.post("/authors/{author_id}/items/", response_model=Author) # (4) |
|||
async def create_author_items(author_id: str, items: list[Item]): # (5) |
|||
return {"name": author_id, "items": items} # (6) |
|||
|
|||
|
|||
@app.get("/authors/", response_model=list[Author]) # (7) |
|||
def get_authors(): # (8) |
|||
return [ # (9) |
|||
{ |
|||
"name": "Breaters", |
|||
"items": [ |
|||
{ |
|||
"name": "Island In The Moon", |
|||
"description": "A place to be playin' and havin' fun", |
|||
}, |
|||
{"name": "Holy Buddies"}, |
|||
], |
|||
}, |
|||
{ |
|||
"name": "System of an Up", |
|||
"items": [ |
|||
{ |
|||
"name": "Salt", |
|||
"description": "The kombucha mushroom people's favorite", |
|||
}, |
|||
{"name": "Pad Thai"}, |
|||
{ |
|||
"name": "Lonely Night", |
|||
"description": "The mostests lonliest nightiest of allest", |
|||
}, |
|||
], |
|||
}, |
|||
] |
|||
Loading…
Reference in new issue