본문 바로가기
Fast API/fastapi배우기

Fast API 배우기 17부 - Path Operation Configuration

by 붕어사랑 티스토리 2021. 11. 3.
반응형

이번에는 path operation의 세팅에 관련된 파라미터들을 배워보겠습니다.

 

 

status_code

status_code를 이용하여 response의 status code를 지정해 줄 수 있습니다.

from typing import Optional, Set

from fastapi import FastAPI, status

from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None
    tags: Set[str] = []


@app.post("/items/", response_model=Item, status_code=status.HTTP_201_CREATED)
async def create_item(item: Item):
    return item

 

tags

tags를 이용하여 operation에 tag를 달아 줄 수 있습니다. str list가 쓰입니다.

from typing import Optional, Set

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None
    tags: Set[str] = []


@app.post("/items/", response_model=Item, tags=["items"])
async def create_item(item: Item):
    return item



@app.get("/items/", tags=["items"])
async def read_items():
    return [{"name": "Foo", "price": 42}]



@app.get("/users/", tags=["users"])
async def read_users():
    return [{"username": "johndoe"}]

그럼 아래와같이 docs에 tag들이 생깁니다.

반응형

summary & description

 

summary와 description을 추가 해 줄 수 있습니다.

from typing import Optional, Set

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None
    tags: Set[str] = []


@app.post(
    "/items/",
    response_model=Item,
    summary="Create an item",
    description="Create an item with all the information, name, description, price, tax and a set of unique tags",
)
async def create_item(item: Item):
    return item

아래와 같이 docs에 추가됩니다.

 

 

 

Docs에 description 추가하기

description을 하기와 같은 방법으로도 추가할 수 있습니다.

 

from typing import Optional, Set

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None
    tags: Set[str] = []


@app.post("/items/", response_model=Item, summary="Create an item")
async def create_item(item: Item):
    """
    Create an item with all the information:
    - **name**: each item must have a name
    - **description**: a long description
    - **price**: required
    - **tax**: if the item doesn't have tax, you can omit this
    - **tags**: a set of unique tag strings for this item
    """
    return item

반응형

댓글