msa-django-blog
마크다운 기반 기술 블로그 서비스입니다.
기술 스택
| 분류 |
기술 |
| Framework |
Django 4.2.14 |
| API |
Django REST Framework 3.16.0 |
| Auth |
SimpleJWT 5.5.0 (RS256) |
| Database |
MySQL (mysqlclient 2.2.7) |
| Docs |
drf-yasg 1.21.10 |
| Server |
Gunicorn 20.1.0 |
주요 기능
- 포스트 관리: 마크다운 기반 글 작성/수정/삭제
- 태그 시스템: 다중 태그 지원, 태그별 필터링
- 댓글/대댓글: 계층형 댓글 구조
- 작성자 관리: JWT 기반 작성자 식별
API 엔드포인트
포스트
| Method |
Endpoint |
설명 |
권한 |
| GET |
/api/blog/posts/ |
포스트 목록 |
공개 |
| GET |
/api/blog/posts/?tag=tagname |
태그 필터링 |
공개 |
| GET |
/api/blog/posts/<id>/ |
포스트 상세 |
공개 |
| GET |
/api/blog/create/ |
내 포스트 목록 |
인증 |
| POST |
/api/blog/create/ |
포스트 생성 |
인증 |
| PUT/PATCH |
/api/blog/posts/<id>/ |
포스트 수정 |
작성자 |
| DELETE |
/api/blog/posts/<id>/ |
포스트 삭제 |
작성자 |
댓글
| Method |
Endpoint |
설명 |
권한 |
| GET |
/api/blog/posts/<id>/comments/ |
댓글 목록 |
공개 |
| POST |
/api/blog/posts/<id>/comments/ |
댓글 작성 |
인증 |
| PUT |
/api/blog/posts/<id>/comments/<id>/ |
댓글 수정 |
작성자 |
| DELETE |
/api/blog/posts/<id>/comments/<id>/ |
댓글 삭제 |
작성자 |
태그
| Method |
Endpoint |
설명 |
| GET |
/api/blog/tags/ |
태그 목록 |
API 문서
데이터 모델
Post
| 필드 |
타입 |
설명 |
| title |
CharField |
제목 |
| content |
TextField |
마크다운 본문 |
| tags |
ManyToMany |
태그 목록 |
| author_id |
CharField |
작성자 ID |
| author_name |
CharField |
작성자 이름 |
| created_at |
DateTimeField |
생성일 |
| updated_at |
DateTimeField |
수정일 |
| 필드 |
타입 |
설명 |
| post |
ForeignKey |
포스트 |
| parent |
ForeignKey(self) |
부모 댓글 (대댓글용) |
| content |
TextField |
댓글 내용 |
| author_id |
CharField |
작성자 ID |
| author_name |
CharField |
작성자 이름 |
Tag
| 필드 |
타입 |
설명 |
| name |
CharField |
태그명 (고유) |
환경 변수
실행 방법
개발 서버
운영 서버
Docker