사용자 도구

사이트 도구


wiki:it:dream_of_enc:backend:blog_api

문서의 이전 판입니다!


views/blog_api.py: 블로그 API 로직

`blog_api.py`는 블로그 기능과 관련된 모든 서버 로직을 처리하는 Flask 블루프린트 모듈입니다. 게시물/댓글 관리, 사용자 인증, 파일 업로드 등 다양한 기능을 API 엔드포인트로 제공합니다.

`url_prefix='/api/blog'` 설정에 따라, 이 파일의 모든 API 주소는 `/api/blog`로 시작합니다.

주요 기능 및 엔드포인트

1. 인증 (`/auth`)

* Method: `POST` * 설명: 환경변수에 저장된 비밀번호와 사용자가 입력한 비밀번호를 비교하여 관리자 권한을 인증합니다.

2. 게시물(Post) 관리

* `GET /posts`: 모든 게시물 목록을 최신순으로 조회합니다. * `GET /posts/<id>`: 특정 ID의 게시물을 조회하고, 조회수를 1 증가시킵니다. * `POST /posts`: 새 게시물을 등록합니다. (관리자 인증 필요) * `PUT /posts/<id>`: 기존 게시물을 수정합니다. (관리자 인증 필요) * `DELETE /posts/<id>`: 게시물을 삭제합니다. (관리자 인증 필요)

3. 댓글(Comment) 관리

* `POST /posts/<id>/comments`: 특정 게시물에 새 댓글을 추가합니다. 댓글 비밀번호는 해시하여 저장됩니다. * `PUT /posts/<id>/comments/<comment_id>`: 댓글을 수정합니다. 비밀번호를 확인해야 수정 가능합니다. * `DELETE /posts/<id>/comments/<comment_id>`: 댓글을 삭제합니다. 비밀번호를 확인해야 삭제 가능합니다.

4. 기타

* `GET /site-info`: 사이트의 총 방문자 수를 반환하고, 카운트를 1 증가시킵니다. * `POST /images`: 게시물에 포함될 이미지를 서버에 업로드하고, 접근 가능한 URL을 반환합니다. (관리자 인증 필요)

보안 처리

* 관리자 인증: 게시물 작성/수정/삭제, 이미지 업로드 시 비밀번호를 확인하여 인가된 사용자만 작업을 수행할 수 있도록 합니다. * XSS (Cross-Site Scripting) 방어: `bleach` 라이브러리를 사용하여 게시물과 댓글의 HTML 내용에서 허용되지 않은 위험한 태그와 속성을 제거(Sanitize)합니다. 이를 통해 악의적인 스크립트가 삽입되는 것을 방지합니다. * 비밀번호 해싱: `werkzeug.security`를 사용하여 댓글 비밀번호를 직접 저장하지 않고, 암호화된 해시값으로 변환하여 저장합니다.

이처럼 `blog_api.py`는 블로그 기능의 핵심 로직을 체계적으로 구현하고, 보안적인 측면까지 고려하여 설계되었습니다.

wiki/it/dream_of_enc/backend/blog_api.1753857794.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki