[FastAPI] HTTP 요청 스키마(schema)로 받기

junah·2022년 8월 15일
0

FastAPI

목록 보기
1/1

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));
profile
개발자를 꿈꾸는 사람

0개의 댓글