FastAPI - Request Body

2025. 8. 27. 11:33Programming Language/Python

반응형

기존에는 get 요청으로 값을 전달할 때 경로를 이용하거나 쿼리 스트링을 이용해서 전달했었는데 POST, PUSH, PATCH같은 메서드의 경우는 서버로 데이터를 전달할때 HTTP 요청 메세지의 Body 영역에 담기는 Request Body를 사용한다.

# Post Request

POST /users HTTP/1.1
Content-Type: application/json

{
  "username": "alice",
  "email": "alice@example.com"
}

# Get Request
GET /users?skip=0&limit=10 HTTP/1.1

 

위와 같이 Get 요청을 제외한 다른 메서드를 이용하는 경우 데이터를 서버측에서 어떻게 받아서 처리해야하는지 확인해보자.

 

1. Request Body

Request Body를 FastAPI에서 만들 때에는 pydantic 라이브러리 내부의 BaseModel이란 것을 사용한다

이는 클래스를 만들때 타입에 대해서 강하게 제한을 하며 도움이 되는 여러 메서드를 제공하는 모듈이다.

먼저 pydantic에서 BaseModel을 import해주고 

그리고 클래스를 하나 생성하고 BaseModel을 상속해주자.

이제 요청의 본문으로 가지고 올 데이터를 이 내부에 선언해주면 된다.

이제 Post 맵핑이 되는 메서드를 하나 만들어주고

이제 메서드의 매개변수 쪽에 우리가 만든 타입의 변수를 하나 넣어주면 

준비가 완료 되었다.

 

이렇게 데이터를 전송하려면 그냥 URL을 사용해서는 안되고 이번엔 API를 테스트를 할 수 있는 Postman을 사용해서 테스트를 해보자.

Postman을 실행하고

 

Post 메서드로 요청을 세팅하고 URL을 작성한 후에 

Body를 눌러준 다음에 raw를 선택하고 

하단 입력 창에 우리가 만들었던 클래스의 멤버에 맞는 요소들을 json의 형태로 작성해주고

Send를 눌러주면

이렇게 응답을 받을 수 있다.

 

응답을 좀 더 간단하게 설정하려면 클래스 인스턴스를 그냥 그대로 return 해줘 도 된다.

위에서 우리가 만든 클래스는 Swagger UI의 Schemas에 추가되어 어떤 요소들이 어떤타입을 받는지를 확인할 수 있게 된다.

이는 API의 내용에서도 볼 수 있다.

 

2. Request Body와 경로 매개변수를 동시에 요청받기

위에서 봤던 request body와 경로 매개변수를 동시에 받을 수 도 있다.

방법은 크게 다르지 않고 둘다 그냥 추가해주면 된다.

(다른 변수를 같이 json의 형태로 전달하기 위해서는 아래와 같이 children을 풀어서 전달해야한다)

이러고 요청에 경로 파라미터를 전달하면서 요청을 json의 형태로 전달하면 

이렇게 값을 정상적으로 반환한다.

 

여기에서 또 쿼리 스트링을 포함해서 받을 수도 있다.

방식은 이전에 했던 방식을 추가해주는 것으로 사용이 가능하다.

여기에 맞에 URL에 값을 추가하고 

요청을 하면

이렇게 응답이 잘 나오는것을 볼 수 있다.

 

반응형

'Programming Language > Python' 카테고리의 다른 글

FastAPI - 경로 매개변수의 검증  (0) 2025.08.27
FastAPI - 쿼리 매개변수 및 문자열 검증  (1) 2025.08.27
FastAPI - 쿼리 매개변수  (0) 2025.08.26
FastAPI 기본  (2) 2025.08.26
웹 스크래핑-준비  (2) 2025.07.28