Python FastAPI에서 외부에서 요청을 받을 때 입력 값들을 스키마(schema)에 받을 수 있는데 입력값이 미리 지정된 형식과 다르면 422 Unprocessable Entity
에러가 반환된다.
# main.py
@app.post("/blog/", response_model=schemas.Blog)
async def create_blog(blog: schemas.BlogBase, db: Session = Depends(get_db)):
return crud.create_blog(db, blog)
# schemas.py
class BlogBase(BaseModel):
id: str
위와 같이 세팅이 되어있을 때 나는 요청을 보낼 때 당연히 url/blog/id=123123
이런 형식으로 보내면 된다고 생각하였지만 이렇게 보낼 경우 422 Unprocessable Entity
에러가 나를 반겨주었다.
이후 구글링으로 찾아보니 단순히 뒤에 파라미터로 넣어주는 것이 아니라 데이터를 보낼 때 body에 json으로 넣어주어야한다.
즉 아래와 같은 코드로 요청을 보내서 수정하였다.
fetch(`${BACKEND_URL}/user`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
id: data.user_id,
email: data.user_email,
}),
}).then((response) => console.log(response));