Skip to content

lucaschoi99/project-choi-blog

Repository files navigation

Choi's Blog Project

스프링 부트 프로젝트 - 개인 블로그 API 개발

About the projectKey FeaturesDevelopment Process

REST API Docs 여기에서 확인 가능합니다.

image

About the Project


게시글 CRUD 기능을 API 개발로 구현하고 문서화 작업, 배포까지 한 스프링 부트 개인 프로젝트 입니다.

더불어, 로그인/회원가입 기능과 비밀번호 암호화, 수정,삭제 권한을 위한 인증/검증 기능을 구현했습니다.

특히, 커뮤니티성 개인 프로젝트를 진행함에 있어 테스트 케이스 작성, 배포, REST API 개발, 꼼꼼한 Exception 처리 와 같은 점들을 공부할 수 있어 많은 도움이 되었습니다.

Environment

  • Spring Boot 2.7.6
  • Java 11
  • Junit5
  • Gradle 7.5.1
  • MySQL 8.0.32

KeyWord

  • Back-End
    • REST API
    • Spring Boot
    • MySQL
  • API Docs
    • Spring REST Docs
  • Deployment

    • AWS-EC2
  • Config

    • WebMvcConfig (ArgumentResolver)
    • QueryDslConfig
  • Test

    • Junit5
    • Controller, Service 통합 테스트

Key Features


  • CRUD 기능

    • 글 작성, 조회, 수정, 삭제 기능 - REST API 개발
  • API Docs 문서화 작업

    • API DOCS by Spring REST Docs
    • 테스트 케이스 관리 - REST API 기능 문서화 작업
  • 인증/검증 기능

    • 글 수정/삭제 권한, 회원가입/로그인 검증, 세션, 쿠키, (JWT)
  • 로그인/회원가입 기능

    • 로그인 시 유저 세션을 발급 받도록 설계
    • 발급된 세션 토큰은 Header의 Cookie에 담도록 설계
  • 비밀번호 암호화 기능

    • 회원가입 시 raw password를 Scrypt 암호화 라이브러리를 이용해 암호화 후 저장
  • Exception 처리

    • 인증/검증 예외처리: UnauthorizedUser, DuplicateEmailException, InvalidSignIn, InvalidRequest
    • Status 404 에러(존재하지 않는 글에 대한 처리): PostNotFound
    • 최상위 Exception 추상 클래스 ProjectChoiException을 상속받은 클래스로 설계

Development Process


개발 중 궁금증과 해결 정리

  • Part1 - 프로젝트에 필요한 개발 개념, 스프링 어노테이션에 대하여

  • Part2 - JPA 제공 기능과 Stream, 디자인 패턴에 대하여

  • Part3 - 인증 / 검증 로직에 대하여


GitHub @lucaschoi99  ·  Velog @lucaschoi

About

개인 블로그 프로젝트 with Spring boot

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published