Python에서 REST API 서비스를 제공하려면 보통 FastAPI 또는 Flask 같은 웹 프레임워크를 사용합니다. 각각의 특징과 사용법을 간략히 설명하겠습니다.
1. FastAPI (추천)
FastAPI는 비동기 방식(Async)을 지원하며 속도가 빠르고 자동 문서화(Swagger UI, ReDoc)를 제공하는 강력한 프레임워크입니다.
🔹 설치
pip install fastapi uvicorn
🔹 기본 예제
app.py에 저장합니다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, FastAPI!"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
127.0.0.1:8000
과 :::8000
(IPv6) 두 개의 포트를 동시에 열려면, 서버를 실행할 때 IPv4와 IPv6를 모두 바인딩해야 합니다.
🔹 실행 Python uvicorn
(FastAPI / Starlette)
만약 FastAPI 같은 웹 프레임워크를 사용하고 있다면 uvicorn
실행 시 --host
옵션을 0.0.0.0
또는 ::
로 설정하세요.
uvicorn app:app --host 0.0.0.0 --port 8000
또는
uvicorn app:app --host :: --port 8000
이렇게 하면 IPv4(0.0.0.0:8000
)와 IPv6(:::8000
) 모두에서 수신할 수 있습니다.
👉 실행 후 http://127.0.0.1:8000/docs
에서 API 문서를 확인할 수 있습니다.
👉 실행 후 http://ipaddress:8000/
로 기능을 실행 할 수 있습니다.
2. Flask
Flask는 간단한 REST API를 구축할 때 많이 사용됩니다.
🔹 설치
pip install flask
🔹 기본 예제
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/", methods=["GET"])
def home():
return jsonify({"message": "Hello, Flask!"})
@app.route("/items/<int:item_id>", methods=["GET"])
def get_item(item_id):
q = request.args.get("q")
return jsonify({"item_id": item_id, "q": q})
if __name__ == "__main__":
app.run(debug=True)
👉 실행 후 http://127.0.0.1:5000/items/1?q=test
요청을 보내면 JSON 응답을 받습니다.
3. Django REST Framework (DRF)
Django 기반으로 RESTful API를 만들 때 유용합니다. 기존 Django 프로젝트와 함께 사용하면 좋습니다.
🔹 설치
pip install django djangorestframework
🔹 기본 예제 (Django 프로젝트에서 사용)
- Django 프로젝트 생성
django-admin startproject myproject
cd myproject
- 앱 생성
python manage.py startapp api
settings.py
수정
INSTALLED_APPS = [
'rest_framework',
'api',
]
api/views.py
에 간단한 API 추가
from rest_framework.response import Response
from rest_framework.decorators import api_view
@api_view(["GET"])
def hello_world(request):
return Response({"message": "Hello, Django REST Framework!"})
api/urls.py
에 경로 등록
from django.urls import path
from .views import hello_world
urlpatterns = [
path('hello/', hello_world),
]
myproject/urls.py
수정
from django.urls import path, include
urlpatterns = [
path('api/', include('api.urls')),
]
- 서버 실행
python manage.py runserver
👉 실행 후 http://127.0.0.1:8000/api/hello/
요청을 보내면 JSON 응답을 받습니다.
4. Which One Should You Use?
Framework | 속도 | 비동기 지원 | 자동 문서화 | 사용 용이성 | 추천 사용 사례 |
---|---|---|---|---|---|
FastAPI | 🚀 빠름 | ✅ O | ✅ O | ⭐️ 쉬움 | 최신 API 서비스, Microservices |
Flask | 🔸 보통 | ❌ X | ❌ X | ⭐️ 쉬움 | 간단한 REST API |
Django DRF | 🐢 느림 | ❌ X | ✅ O | 🟡 중간 | Django 기반 프로젝트 |
🔹 추천
- FastAPI → 성능이 중요하거나 비동기 지원이 필요할 때
- Flask → 간단한 API 개발
- Django REST Framework → Django 프로젝트와 함께 사용할 때
어떤 프레임워크를 사용할지 고민 중이라면, FastAPI를 추천합니다! 🚀
'언어 > Python' 카테고리의 다른 글
[ Python ] MySQL에 연결해서 데이터 가져오기 (0) | 2025.02.03 |
---|---|
[ Python ] REST API 사용시 디버깅을 위해 외부/직접 호출 구분해서 실행하기 (0) | 2025.02.03 |
[ Python ] Requests - Rest API 사용하기 (0) | 2025.01.12 |
[ Python ] 상위 폴더에 있는 모듈 import 시 경로 설정하기 (0) | 2025.01.12 |
[ Python ] Pandas 기본 사용하기 (0) | 2025.01.12 |