Hyes-y / bulletin-board-API

게시판 CRUD API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

게시판 CRUD API (Bulletin-Board API)

원티드 프리온보딩 백엔드 기업 과제

목차


프로젝트 개요

Django Rest Framework 를 이용한 REST API 서버로

  • 게시글 CRUD
  • 게시글 Pagination(20개씩)
  • weather API 연동(게시글 등록시 실시간 날씨 반영)

위 기능을 제공합니다.


과제 요구사항 분석

1. 게시판 CRUD

1) 글 작성

  • 글 작성시 제목, 본문, 비밀번호(암호화) 필요

    • 비밀번호 암호화는 bcrypt 모듈 사용
  • 제목은 최대 20자, 본문은 최대 200자

    • serializer의 validate() 함수 이용

    • model field의 경우 두 속성 다 CharField 사용
      😮 TextFieldmax_length는 폼의 area에 크기에 영향
      → 길이 제한 위해 CharField로 결정

  • 비밀번호는 최소 6자 이상, 숫자는 1개 이상 반드시 포함

    • 정규표현식(re 모듈)을 이용하여 해당 조건 유효성 검사
  • create 요청시 해당 유저의 IP를 기반으로 실시간 날씨 반영


2) 글 조회

  • 글 조회시 최신순으로 정렬

    • model Meta 클래스에 ordering=['-created_at'] 적용
  • 글 개수가 많은 경우 페이지네이션 (20개씩)

    • rest_framework 에서 제공하는 CursorPagination 사용

3) 글 수정, 삭제

  • 비밀번호를 이용하여 글 수정, 삭제 가능

    • 암호화된 비밀번호와 비교하여 일치하면 요청 수행
    • 삭제할 때 soft delete 방식 사용
    • 비밀번호 입력받고 is_deleted 속성을 수정하므로 PUT 메소드 사용

기능 목록

버전 기능 설명 상태
v1 글 생성 제목, 본문, 작성자, 비밀번호를 입력받아 글 생성
- 전체 글 조회 최신순으로 정렬된 글을 20개씩 조회 (pagination=True)
- 특정 글 조회 id 에 해당하는 글을 조회
- 글 수정 (변경할 내용 포함) 제목, 본문, 작성자, 비밀번호를 입력받아 변경사항 저장
- 글 삭제 비밀번호를 입력 받아 해당 글 삭제 처리(is_deleted = True)
- 날씨 정보 받아오기 weather-api 를 이용해 실시간 날씨 정보 얻어오기
-

🔥 추가 기능 구현시 업데이트 예정


프로젝트 기술 스택

Backend

DB

Tools


개발 기간

  • 2022/09/06~2022/09/07

ERD

  • made by ERDCLOUD


API 목록

Postman API Document


프로젝트 시작 방법

  1. 로컬에서 실행할 경우
# 프로젝트 clone(로컬로 내려받기)
git clone -b main --single-branch ${github 주소}
cd ${디렉터리 명}

# 가상환경 설정
python -m venv ${가상환경명}
source ${가상환경명}/bin/activate
# window (2 ways) 
# 1> ${가상환경명}/Scripts/activate
# 2> activate

# 라이브러리 설치
pip install -r requirements.txt
# 실행
python manage.py runserver

About

게시판 CRUD API


Languages

Language:Python 100.0%