Skip to content

📅 장고 REST Framework API 과정

🎯 과정 개요

  • 대상: 장고 10일 과정 수료자 또는 장고 기본 지식 보유자
  • 목표: RESTful API 개발 전문성 습득 및 프레임워크 비교 능력 향상
  • 특징: 실습 중심(80%), pytest 기반 테스트, CI/CD 구축

📚 선수 지식

🛠️ 개발 환경

  • 파이썬 3.10+
  • 장고 4.2+
  • 장고 REST Framework 3.14+
  • pytest, pytest-django
  • Insomnia (API 테스트 도구)
  • GitHub Actions

📋 일차별 커리큘럼

Day 1: REST API 기초와 DRF 시작

오전 (3시간)

  • REST API 설계 원칙
  • RESTful 아키텍처 이해
  • HTTP 메서드와 상태 코드
  • API 설계 best practices
  • DRF 소개 및 설치
  • 프로젝트 구조 설정
  • 기본 설정 및 URL 구성

오후 (3시간)

  • 첫 API 엔드포인트 작성
  • Function-based views
  • Serializer 기초
  • Insomnia 사용법 (30분)
  • 기본 요청 테스트
  • 환경 변수 설정
  • 실습: 간단한 메모 API
  • 메모 목록 조회 (GET)
  • 메모 생성 (POST)
  • 메모 상세 조회 (GET)

Day 2: DRF Serializer와 pytest 기초

오전 (3시간)

  • ModelSerializer 심화
  • 필드 커스터마이징
  • 중첩된 관계 처리
  • 검증(Validation) 메서드
  • SerializerMethodField 활용

오후 (3시간)

  • pytest 환경 설정
  • pytest-django 설치 및 설정
  • 테스트 구조 이해
  • 첫 API 테스트 작성
  • APIClient 사용법
  • 테스트 픽스처 기초
  • 실습: 블로그 API와 테스트
  • Post, Comment 모델
  • CRUD 기능 구현
  • 각 엔드포인트별 테스트

Day 3: ViewSets과 테스트 전략

오전 (3시간)

  • Generic Views 이해
  • ListAPIView, CreateAPIView 등
  • Mixins 활용
  • ViewSet과 Router
  • ModelViewSet 사용
  • 커스텀 액션 추가

오후 (3시간)

  • 고급 pytest 기법
  • 파라미터화된 테스트
  • 테스트 클래스 구조화
  • 목(Mock) 활용
  • 테스트 커버리지
  • pytest-cov 설정
  • 커버리지 리포트 생성
  • 실습: 완전한 CRUD와 테스트
  • ViewSet 기반 API
  • 100% 테스트 커버리지 목표

Day 4: 인증/권한과 테스트

오전 (3시간)

  • DRF 인증 시스템
  • Token Authentication
  • JWT 구현 (djangorestframework-simplejwt)
  • Session Authentication 비교
  • 권한 클래스
  • 내장 권한 클래스
  • 커스텀 권한 작성

오후 (3시간)

  • 인증/권한 테스트
  • 인증된 요청 테스트
  • 권한 검증 테스트
  • 토큰 갱신 테스트
  • 실습: 회원제 API
  • 회원가입/로그인
  • 프로필 관리
  • 권한별 접근 제어

Day 5: API 고급 기능과 장고 Ninja

오전 (3시간)

  • DRF 고급 기능
  • 필터링 (django-filter)
  • 검색 기능
  • 정렬 및 페이지네이션
  • Throttling (요청 제한)

오후 (3시간)

  • 장고 Ninja 소개
  • 설치 및 기본 구조
  • Type hints 활용
  • 같은 API를 Ninja로 구현
  • 프레임워크 비교
  • 코드 스타일 차이
  • 성능 특성
  • 실습: 상품 검색 API
  • 복잡한 필터링
  • 전문 검색
  • 두 프레임워크로 구현

Day 6: GitHub Actions와 CI/CD

오전 (3시간)

  • GitHub Actions 기초
  • 워크플로우 이해
  • YAML 문법
  • 트리거 설정
  • 장고 프로젝트용 CI 구성
  • 테스트 자동화
  • 코드 품질 검사

오후 (3시간)

  • 고급 CI/CD 기능
  • 환경별 배포
  • 시크릿 관리
  • 배포 자동화
  • 코드 품질 도구
  • flake8, black
  • pre-commit hooks
  • 실습: 완전한 CI/CD 파이프라인
  • PR시 자동 테스트
  • 코드 커버리지 체크
  • 자동 배포 설정

Day 7: FastAPI 비교와 통합 테스트

오전 (3시간)

  • FastAPI 기초
  • 프로젝트 구조
  • Pydantic 모델
  • 비동기 처리
  • 동일 API FastAPI로 구현
  • CRUD 엔드포인트
  • 인증 처리

오후 (3시간)

  • 통합 테스트 작성
  • 시나리오 기반 테스트
  • E2E 테스트 기초
  • 성능 비교
  • 응답 시간 측정
  • 메모리 사용량
  • 실습: 전자상거래 API
  • 상품, 장바구니, 주문
  • 3개 프레임워크 비교

Day 8: 실전 프로젝트와 배포

오전 (3시간)

  • 종합 프로젝트 설계
  • 소셜 미디어 API
  • 요구사항 분석
  • TDD 접근법
  • 핵심 기능 구현
  • 사용자 시스템
  • 게시물 CRUD
  • 팔로우 기능

오후 (3시간)

  • 프로덕션 준비
  • 환경 변수 관리
  • 로깅 설정
  • 에러 처리
  • 배포 및 모니터링
  • Docker 컨테이너화
  • 배포 전략
  • 모니터링 도구
  • 실습: 전체 워크플로우
  • 개발부터 배포까지
  • 문서화
  • 사용자 가이드

🧪 테스트 도구 및 예제

pytest 기본 구조

# conftest.py
import pytest
from rest_framework.test import APIClient
from django.contrib.auth import get_user_model

User = get_user_model()

@pytest.fixture
def api_client():
    return APIClient()

@pytest.fixture
def user(db):
    return User.objects.create_user(
        username='testuser',
        email='test@example.com',
        password='testpass123'
    )

@pytest.fixture
def auth_client(api_client, user):
    api_client.force_authenticate(user=user)
    return api_client

GitHub Actions 기본 설정

name: 장고 REST API CI

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.11'

    - name: Install dependencies
      run: |
        pip install -r requirements.txt

    - name: Run tests
      run: |
        pytest --cov=./ --cov-report=xml

    - name: Code quality
      run: |
        flake8 .
        black --check .

📊 프레임워크 비교 기준

항목 DRF 장고 Ninja FastAPI
학습 곡선 중간 낮음 중간
문서화 자동 (브라우저블) OpenAPI 자동 (Swagger)
성능 좋음 매우 좋음 최고
생태계 매우 풍부 성장 중 풍부
타입 안정성 낮음 높음 매우 높음

🎯 학습 성과

  1. RESTful API 설계 및 구현 능력
  2. 테스트 주도 개발(TDD) 숙달
  3. CI/CD 파이프라인 구축 능력
  4. 다양한 API 프레임워크 비교 분석 능력
  5. 프로덕션 레벨 API 개발 능력

📚 추천 학습 자료

Comments