본문 바로가기
Python

[PYTHON] REST API 이것만 알면 끝 : 설계부터 구현 및 테스트까지

by Dev. Orion 2025. 7. 22.
반응형

REST API 이것만 알면 끝 : 설계부터 구현 및 테스트까지
[PYTHON] REST API

 

Python을 활용한 REST API는 웹 서비스와 앱, 외부 시스템을 연결하는 핵심 기술입니다. 이 글에서는 API 설계 원칙부터 Flask/FASTAPI 예제, client 코드 연동, 보안 및 테스트 전략까지 실무에서 바로 활용할 수 있는 내용을 제공합니다.

1. REST API란?

  • REST = Representational State Transfer
  • HTTP 메서드(GET, POST, PUT, DELETE)를 통한 리소스 제어
  • 무상태성(stateless), URI 기반 리소스 지정, JSON을 주로 사용

2. 설계의 핵심 원칙

  • 리소스는 명사 URI로 표현 (예: /users, /articles/123)
  • HTTP 상태 코드 사용 (200, 201, 400, 404 등)
  • 요청/응답의 일관성 유지 및 에러 메시지 구조화
  • 버저닝 지원 (예: /api/v1/...)

3. Flask 기반 REST API 구현 예시


from flask import Flask, request, jsonify

app = Flask(__name__)
items = []

@app.route('/items', methods=['GET', 'POST'])
def handle_items():
    if request.method == 'POST':
        data = request.json
        item = {'id': len(items)+1, 'name': data['name']}
        items.append(item)
        return jsonify(item), 201
    return jsonify(items)

@app.route('/items/', methods=['GET', 'PUT', 'DELETE'])
def handle_item(iid):
    item = next((x for x in items if x['id'] == iid), None)
    if not item: return jsonify({'error':'Not found'}), 404
    if request.method == 'PUT':
        item['name'] = request.json.get('name', item['name'])
        return jsonify(item)
    if request.method == 'DELETE':
        items.remove(item)
        return '', 204
    return jsonify(item)

if __name__ == '__main__':
    app.run(debug=True)

4. 클라이언트 예: requests로 API 호출


import requests

res = requests.get('http://localhost:5000/items')
print(res.json())

res = requests.post('http://localhost:5000/items', json={'name':'apple'})
print(res.status_code, res.json())

5. FastAPI vs Flask 비교

항목 Flask FastAPI
코드 구조 간단 & 유연 타입 힌트 기반 자동 문서화
API 문서 수동 설정 Swagger/OpenAPI 기본 제공
성능 WSGI 기반 ASGI + 비동기 처리
학습 곡선 낮음 약간 높음

6. 보안 및 인증 적용

  • HTTPS 적용 및 CORS 설정
  • JWT 토큰 기반 인증 활용
  • API 키 또는 OAuth 2.0 연동

7. 테스트 전략

  • unit 테스트(Flask client 사용)로 엔드포인트 검증
  • integration 테스트(외부 호출 포함)
  • Postman이나 pytest 활용 자동화 테스트

8. 결론

Python 기반 REST API는 간단한 서비스부터 대규모 시스템까지 적용 가능한 기술입니다. API 설계를 올바르게 하고, Flask 또는 FastAPI를 선택하여 구현하며, 인증/테스트를 확보하면 안전하고 확장 가능한 백엔드를 구성할 수 있습니다.

728x90
반응형