FastAPI

FastAPI 강좌 2강: 데이터 수집 API 구현

atomicdev 2024. 10. 9. 10:10
728x90

데이터 수집 API 구현


강의 목표:

  • FastAPI를 사용하여 데이터를 수집하는 방법을 이해한다.
  • 데이터 입력 엔드포인트(/data_input)를 구현하여 API로 데이터를 전송받고 저장하는 방법을 배운다.
    FastAPI의 POST 요청을 통한 데이터 입력 과정

 


강의 세부 내용:

1. 데이터 수집 API의 기본 개념

  • API를 통한 데이터 수집: 클라이언트로부터 데이터를 수집하고 이를 서버에서 처리하는 방법을 학습.
  • FastAPI에서는 POST 요청을 통해 데이터를 받아올 수 있으며, 이를 JSON 또는 다른 형식으로 처리할 수 있습니다.

2. FastAPI에서 데이터 전송 및 수신

  1. HTTP 메서드: FastAPI에서는 GET, POST, PUT, DELETE 등의 HTTP 메서드를 사용하여 다양한 형태의 요청을 처리합니다.
    • POST 요청: 데이터를 서버에 보내기 위해 사용됩니다. 이 강의에서는 POST를 사용해 클라이언트로부터 데이터를 받아옵니다.
  2. Pydantic을 사용한 데이터 유효성 검사: FastAPI는 Python의 타입 힌트를 기반으로 Pydantic을 사용해 입력 데이터를 검증합니다. 이 과정을 통해 전송된 데이터의 타입이나 형식이 맞는지 자동으로 검사할 수 있습니다.

실습: /data_input 엔드포인트 구현

1. FastAPI에서 POST 요청을 처리하는 기본 구조

  • main.py 파일에서 /data_input이라는 엔드포인트를 생성하고, 클라이언트로부터 JSON 데이터를 받아 처리하는 방법을 설명합니다.
    from fastapi import FastAPI
    from pydantic import BaseModel
    
    # FastAPI 인스턴스 생성
    app = FastAPI()
    
    # Pydantic 모델 정의 (데이터의 유효성 검사를 위해 사용)
    class DataInput(BaseModel):
        name: str
        age: int
        email: str
    
    # POST 엔드포인트 정의
    @app.post("/data_input/")
    async def receive_data(data: DataInput):
        # 수신한 데이터를 처리
        return {"message": "Data received", "name": data.name, "age": data.age, "email": data.email}

2. 코드 설명:

  • BaseModel: Pydantic의 기본 모델을 상속받아, API로 수신할 데이터 구조를 정의합니다.
    • name: str: 문자열로 된 이름 필드.
    • age: int: 나이 필드, 정수형 데이터.
    • email: str: 이메일 필드.
  • @app.post("/data_input/"): POST 요청을 처리하는 엔드포인트입니다.
  • receive_data: 클라이언트가 전송한 데이터를 DataInput 모델로 받습니다.
  • 전송된 데이터는 서버에서 자동으로 검증되며, 검증에 실패하면 FastAPI는 422 상태 코드와 함께 에러 메시지를 반환합니다.

3. 테스트: FastAPI 엔드포인트에 POST 요청 보내기

  • POST 요청을 보내기 위해 Postman 또는 curl을 사용할 수 있습니다.

Postman 사용 예시:

  1. Method: POST
  2. URL: http://127.0.0.1:8000/data_input/
  3. Body: JSON 형식으로 데이터를 전송.
{
  "name": "Alice",
  "age": 30,
  "email": "alice@example.com"
}
 
 

curl 사용 예시:

curl -X 'POST' \
  'http://127.0.0.1:8000/data_input/' \
  -H 'Content-Type: application/json' \
  -d '{"name": "Alice", "age": 30, "email": "alice@example.com"}'
  1. 응답:
{
  "message": "Data received",
  "name": "Alice",
  "age": 30,
  "email": "alice@example.com"
}

4. 데이터 저장:

  • 이 예시에서는 데이터를 단순히 받아서 응답으로 반환하지만, 실제 프로젝트에서는 받은 데이터를 데이터베이스에 저장할 수 있습니다. 다음 강의에서는 이를 더 깊이 다룰 예정입니다.

마무리 및 추가 학습

  • 이번 강의에서는 POST 요청을 통해 데이터를 수집하는 FastAPI 엔드포인트를 구현했습니다.
  • Pydantic을 사용하여 데이터 유효성 검사를 자동화하는 방법을 배웠으며, 실제로 데이터를 받아 처리하는 기본적인 흐름을 이해했습니다.
  • 다음 강의에서는 데이터를 저장하고 관리하는 방법에 대해 배우며, 간단한 데이터베이스 연동 실습을 진행합니다.
728x90