요구사항 분석
1. 요구사항 분석
지금까지 배운 것을 기반으로 블로그 기능을 구현해보겠습니다. 블로그는 웹 애플리케이션의 기본이 되는 CRUD(Create, Read, Update, Delete) 기능을 모두 포함하고 있어 실제 서비스 개발에 필요한 다양한 기술을 학습하기에 적합합니다.
또한 이전처럼 Thunder Client를 사용하여 API를 테스트하는 것이 아니라, 실제 웹 페이지에서 API를 호출하도록 하겠습니다. 이를 통해 프론트엔드와 백엔드 간의 통신 방법을 실제로 경험할 수 있습니다.
다만 이를 위해 기초적인 JavaScript 지식이 필요합니다. 특히 비동기 통신에 대한 이해가 필요하므로 이에 대한 학습이 필요하다면 위니북스의 JavaScript 베이스캠프 책을 참고해주세요.
HTML, CSS, JS가 생소할 수 있기 때문에 가능한 쉬운 코드로 구현하려고 노력하였습니다.
1.1 기능적 요구사항
1.1.1 사용자 인증
- 회원가입: 사용자는 이메일과 비밀번호로 계정을 생성할 수 있습니다.
- 로그인/로그아웃: 사용자는 생성한 계정으로 로그인하고 로그아웃할 수 있습니다.
- 인증된 사용자만 글 작성, 수정, 삭제가 가능합니다.
1.1.2 게시글 관리
- 게시글 작성: 제목, 내용, 작성일을 포함한 블로그 포스트를 작성할 수 있습니다.
- 게시글 조회: 작성된 게시글의 목록을 확인하고 개별 게시글을 읽을 수 있습니다.
- 게시글 수정: 자신이 작성한 게시글의 제목과 내용을 수정할 수 있습니다.
- 게시글 삭제: 자신이 작성한 게시글을 삭제할 수 있습니다.
1.1.3 사용자 인터페이스
- 웹 인터페이스: HTML/JavaScript를 사용하여 간단한 인터페이스를 제공합니다.
- Thunder Client 대신 실제 웹 페이지에서 API를 호출합니다.
1.2 기술적 요구사항
1.2.1 백엔드
- SQLAlchemy를 사용하여 데이터베이스를 관리합니다.
- JWT를 사용하여 사용자 인증을 구현합니다.
- CORS 설정을 통해 프론트엔드와의 통신을 가능하게 합니다.
1.2.2 데이터베이스
- User 테이블: 사용자 정보(이메일, 비밀번호 해시) 저장
- Post 테이블: 게시글 정보(제목, 내용, 작성일, 작성자) 저장
- SQLite를 사용하여 간단하게 구현합니다.
1.2.3 프론트엔드
- HTML, CSS, JavaScript를 사용하여 UI를 꾸미지 않고 간단히 구현합니다.
- fetch API를 사용하여 백엔드와 통신합니다.
- 로컬 스토리지를 사용하여 JWT 토큰을 관리합니다.
- MPA(Multi-Page Application)로 구현합니다.
1.3 구현 계획
- CORS 설정 및 미들웨어 구현
- SPA(Single-Page Application)로 간단한 CRUD 기능 구현
- MPA(Multi-Page Application)로 코드 나누기
- DB 구성 및 static 파일 서빙
- 인증 구현
이러한 요구사항을 바탕으로 다음 섹션에서는 각 기능을 단계적으로 구현해나가도록 하겠습니다.