FastAPI, SQLAlchemy, SQLite를 사용한 사용자 인증 기반의 Todo 관리 RESTful API입니다.
-
저장소 클론:
git clone <repository-url> cd todo_api_assignment
-
가상 환경 설정:
python3.12 -m venv venv source venv/bin/activate
-
종속성 설치:
pip install -r requirements.txt
-
데이터베이스 초기화:
sqlite3 todo.db < init_db.sql
-
애플리케이션 실행:
uvicorn main:app --reload
- 에서 접근 가능.
-
테스트 실행:
pytest --cov=. --cov-report=term-missing
메서드 | 엔드포인트 | 설명 | 인증 필요 |
---|---|---|---|
POST | 새 사용자 등록 | X | |
POST | 로그인 및 JWT 토큰 발급 | X | |
GET | 현재 사용자 정보 조회 | O | |
PUT | 현재 사용자 정보 수정 | O | |
DELETE | 현재 사용자 삭제 | O | |
POST | 새 Todo 생성 | O | |
GET | 사용자 Todo 목록 조회 | O | |
GET | 제목으로 Todo 검색 | O | |
GET | 특정 Todo 조회 | O | |
PUT | 특정 Todo 수정 | O | |
DELETE | 특정 Todo 삭제 | O |
-
사용자 등록:
curl -X POST http://127.0.0.1:8000/users/signup -H "Content-Type: application/json" -d '{"email":"test@example.com","password":"password123"}'
-
로그인:
curl -X POST http://127.0.0.1:8000/users/login -H "Content-Type: application/json" -d '{"email":"test@example.com","password":"password123"}'
-
Todo 생성:
curl -X POST http://127.0.0.1:8000/todos -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -d '{"title":"Test Todo","description":"Test","completed":false}'
자세한 목록은 를 참조하세요. 주요 라이브러리:
- FastAPI: API 프레임워크
- SQLAlchemy: SQLite ORM
- python-jose: JWT 처리
- passlib: 비밀번호 해싱
- pytest: 테스트 프레임워크