fastapi 422 error

# fastapi(web framework for building APIs with Python 3.6+) 서버에 요청시 422 에러 발생 해결하기

# 다음과 같은 요청시
curl 'http://localhost:8000/path/lemon/ysoftman' \
  -H 'Origin: http://localhost:8000' \
  -H 'X-User-Token: abc123' \
  --data-raw '{"name":"ysoftman","desc":"test","spec":{"val1":100,"val2":"asdf"}}'

# 응답으로 422(Unprocessable Entity)가 발생하며 다음과 같은 응답 메시지를 받는 경우가 있다.
{"detail":[{"loc":["query","data"],"msg":"field required","type":"value_error.missing"}]}%

# fastapi route 함수에서 파라메터 타입이 잘못된거나 빠지면 발생한다.
# BaseModel 을 이용해 파라메터 타입을 명시하면 된다.
class SpecObject(BaseModel):
    val1: int
    val2: str

class YsoftmanData(BaseModel):
    name: str
    desc: str
    spec: SpecObject

@router.post("/path/{val1}/ysoftman")
def post_ysoftman(val1: str, data: YsoftmanData, x_user_token: str = Header(default=None)):

# 참고

comments:

댓글 쓰기