약 6분
본문 듣기
읽기 설정
글자 크기
줄 간격
글꼴
4.3 실습 프로젝트: 간단한 데이터 송신 및 수신 API
이번 실습 프로젝트에서는 FastAPI를 이용하여 간단한 데이터 송신 및 수신 API를 만들어 보겠습니다. 이 프로젝트는 HTTP 요청을 통한 간단한 CRUD(Create, Read, Update, Delete) 작업을 실습하는데 목적이 있습니다.
먼저, 필요한 패키지와 모듈들을 설치하고 FastAPI로 API 서버를 구축해보도록 하겠습니다.
1. 환경 설정
FastAPI와 필요한 라이브러리를 설치합니다. 다음 명령어를 실행해주세요:
pip install fastapi uvicorn
2. 기본 API 서버 구축
이제 FastAPI를 사용해 API 서버를 작성해보겠습니다. 아래의 코드를 입력해 main.py라는 파일을 생성해주세요.
코드
python
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
id: int
name: str
description: str = None
# 데이터 저장을 위한 임시 저장소
items = {}
@app.post("/items/")
def create_item(item: Item):
if item.id in items:
raise HTTPException(status_code=400, detail="Item already exists")
items[item.id] = item
return item
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
return items[item_id]
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
items[item_id] = item
return item
@app.delete("/items/{item_id}")
def delete_item(item_id: int):
if item_id in items:
del items[item_id]
return {"detail": "Item deleted"}
raise HTTPException(status_code=404, detail="Item not found")
3. API 실행
서버를 실행시키기 위해 아래 명령어를 사용합니다:
uvicorn main:app --reload
위 명령어를 실행하면 FastAPI 서버가 http://127.0.0.1:8000에서 실행됩니다. 브라우저에서 이 주소를 입력하여 API 문서를 확인할 수 있습니다.
4. API 테스트
이제 API를 테스트해보겠습니다. Postman이나 curl을 사용하여 다음의 요청들을 시도해보세요:
- Create Item: POST
/items/- Body:
{ "id": 1, "name": "Sample Item", "description": "This is a sample item" } - Read Item: GET
/items/1 - Update Item: PUT
/items/1- Body:
{ "id": 1, "name": "Updated Item", "description": "This is an updated sample item" } - Delete Item: DELETE
/items/1
이와 같이 요청하며 API의 기능을 확인할 수 있습니다.
5. 퀴즈 및 실습 과제
- 퀴즈: FastAPI에서 사용하는 데이터 검증 모델은 무엇인가요?
- 실습 과제: 위의 API를 MySQL 데이터베이스와 연결하여 지속 가능한 데이터 저장이 가능하도록 수정해보세요. SQLAlchemy ORM을 사용하여 작업하면 좋습니다.
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.