728x90
반응형
FastAPI 와 Pydantic 을 이용해서 API 작성을 하면서 request body로 들어오는 값의 존재 유무에 따라서 어떻게 세팅 되는지 확인이 필요했다.
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool | None = True
address: str = "seoul"
address1: str | None = None
@app.post("/items")
def insert_item(item: Item):
return item
아주 간단한 API 이다. name 과 price 는 필수 값이고 is_offer 는 bool 타입으로 None 이 허용된다.
1. name, price 만 존재할 경우 -> 필드가 존재 하지 않을 경우 default 값으로 설정된다.
{
"name": "test",
"price": 500.0,
"is_offer": true,
"address": "seoul",
"address1": null
}
2. is_offer 에 null 이 들어간 경우 -> null 그대로 리턴 (None 을 허용했기 때문)
{
"name": "test",
"price": 500.0,
"is_offer": null,
"address": "seoul",
"address1": null
}
3. address 에 null 이 들어간 경우 -> Error
{
"detail": [
{
"type": "string_type",
"loc": [
"body",
"address"
],
"msg": "Input should be a valid string",
"input": null,
}
]
}
4. 결론
None 을 허용할 경우 값이 null 이 허용된다. 하지만 null 경우 default 값으로 값이 설정되지는 않는다. 그냥 null 로 설정된다.
728x90
반응형
'Development > Python' 카테고리의 다른 글
파이썬 문법 - 클래스 정의 (ABCMeta, object) (0) | 2024.05.30 |
---|---|
[Pycharm] Find in Files 검색시 venv 파일 제외 시키기 (0) | 2024.04.24 |
맥(Mac)에서 아나콘다(Anaconda) 제거하기 (0) | 2023.08.11 |
머신러닝 관련 용어 (0) | 2023.06.12 |
colab 에서 kaggle 설정 (0) | 2023.06.07 |