반응형
당연히 호출하는게 있다면 응답해주는게 있을것입니다.
이때도 형식과 필드를 지정하여 응답해줄 수 있습니다
사용 방법은 path 옵션으로 지정해주는 것입니다.
- @app.get()
- @app.post()
- @app.put()
- @app.delete()
- etc
특히 로그인이나 회원가입의 경우 password 필드가 존재합니다.
이때 패스워드를 리턴해준다면 보안상 안좋기때문에 아래와 같이 다른 필드를 리턴해주도록 할 수 있습니다.
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel, EmailStr
app = FastAPI()
class UserIn(BaseModel):
username: str
password: str
email: EmailStr
full_name: Union[str, None] = None
class UserOut(BaseModel):
username: str
email: EmailStr
full_name: Union[str, None] = None
@app.post("/user/", response_model=UserOut)
async def create_user(user: UserIn):
return user
리턴되는 값에 default 도 정의할 수 있고 리턴할때 default 값은 전달하지 않을 수 도 있습니다.
class Item(BaseModel):
name: str
description: Union[str, None] = None # 선택적
price: float
tax: float = 10.5 # 기본값 설정
tags: list[str] = [] # 기본값 설정
items = {
"foo": {"name": "Foo", "price": 50.2},
"bar": {"name": "Bar", "description": "The bartenders", "price": 62, "tax": 20.2},
"baz": {"name": "Baz", "description": None, "price": 50.2, "tax": 10.5, "tags": []},
}
@app.get("/items/{item_id}", response_model=Item, response_model_exclude_unset=True)
async def read_item(item_id: str):
return items[item_id]
# http://127.0.0.1:8001/items/foo
"""
{
"name": "Foo",
"price": 50.2
}
"""
class Item(BaseModel):
name: str
description: Union[str, None] = None
price: float
tax: float = 10.5
items = {
"foo": {"name": "Foo", "price": 50.2},
"bar": {"name": "Bar", "description": "The Bar fighters", "price": 62, "tax": 20.2},
"baz": {
"name": "Baz",
"description": "There goes my baz",
"price": 50.2,
"tax": 10.5,
},
}
@app.get(
"/items/{item_id}/name",
response_model=Item,
response_model_include=["name", "description"],
)
async def read_item_name(item_id: str):
return items[item_id]
@app.get("/items/{item_id}/public", response_model=Item, response_model_exclude=["tax"])
async def read_item_public_data(item_id: str):
return items[item_id]
좌측 이미지가
http://127.0.0.1:8001/items/foo/name
http://127.0.0.1:8001/items/foo/public
리턴 해줘야 할 값이 null을 포함해야하는지 default 값을 반환해야하는지 생각해보고 매개변수를 선택하여 사용하면 될것 같습니다.
반응형
'Fastapi' 카테고리의 다른 글
FastAPI 자습서 스터디 기록 (Extra Models) (0) | 2022.06.14 |
---|---|
FastAPI 자습서 스터디 기록 (Header Parameters) (0) | 2022.06.12 |
FastAPI 자습서 스터디 기록 (Multiple Parameters, Nested Models) (0) | 2022.06.12 |
FastAPI 자습서 스터디 기록 (Query Parameters and String and numeric Validations, ) (0) | 2022.06.12 |
FastAPI 자습서 스터디 기록 (Request Body, Pydantic) (0) | 2022.06.12 |
댓글