Pycharm and FastAPI - (2)
Pycharm and FastAPI - (2)
이어서 FastAPI 기본 학습 기록입니다
Multiple Parameters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from fastapi import Body, FastAPI, Path
from pydantic import BaseModel
app = FastAPI()
"""
Part 7 -> Body - Multiple Parameters
"""
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
class User(BaseModel):
username: str
full_name: str | None = None
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int = Path(..., title="The ID of the item to get", ge=0, le=150),
q: str | None = None,
item: Item = Body(..., embed=True),
user: User,
importance: int = Body(...),
):
results = {"item_id": item_id}
if q:
results.update({"q": q})
if item:
results.update({"item": item.name})
if user:
results.update({"user": user})
if importance:
results.update({"importance": importance})
return results
Body - Fields
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from fastapi import FastAPI, Body
from pydantic import BaseModel, Field
app = FastAPI()
"""
Part 8 -> Body - Fields
"""
class Item(BaseModel):
name: str
description: str | None = Field(
None, title="The description of the item", max_length=300
)
price: float = Field(..., gt=0, description="The price must be greater than zero")
tax: float | None = None
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item = Body(..., embed=True)):
results = {"item_id": item_id, "item": item}
return results
Nested Models
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from fastapi import FastAPI, Body
from pydantic import BaseModel, HttpUrl
app = FastAPI()
"""
Part 9 -> Body - Nested Models
"""
class Image(BaseModel):
url: HttpUrl
name: str
class Item(BaseModel):
name: str
description: str | None
price: float
tax: float | None = None
tags: set[str] = set()
image: Image | None = None
class Offer(BaseModel):
name: str
description: str | None = None
price: float
items: list[Item]
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
results = {"item_id": item_id, "item": item}
return results
@app.put("/offers")
async def create_offer(offer: Offer = Body(..., embed=True)):
return offer
@app.pose("images/multiple")
async def create_multiple_images(images: list[Image]):
return images
@app.post("/blah")
async def create_some_blahs(blahs: dict[int, float]):
return blahs
This post is licensed under
CC BY 4.0
by the author.