상똥이의 Back-End 공부방

[Board Project] 2. 프로젝트 생성 (스프링 이니셜라이저/ UML/ api 설계) 본문

프로젝트/게시판 만들기

[Board Project] 2. 프로젝트 생성 (스프링 이니셜라이저/ UML/ api 설계)

상똥백 2023. 9. 5. 20:09

목차

1. 간단한 계획 설명

2. 사용할 기능 (dependency) 준비

3. usecase 작성

4. api 설계

 

[1. 간단한 계획 설명]

- IntelliJ Ultimate과 Spring Boot 그리고 MySQL을 사용해 게시판을 제작할 것이다 

- 로그인 기능, 게시글 작성 및 수정 기능, 댓글 작성 및 수정 기능, 게시글 검색 기능, 해시태그 기능을 구현할 것이다

 

[2. 사용할 기능(dependency) 준비]

1. Spring Initializr에 들어가 프로젝트를 생성한다

 - Project : Gradle-Groovy

 - Language : Java

 - Spring Boot : 3.1.3

 - Java : 17

2. 사용할 기능들을 추가한다

(1) Web 관련 dependencies

 - Spring Web

 - Rest Pepositories

 - Rest Repositories HAL Explorer

(2) SQL 관련 dependencies

 - Spring Data JPA

 - H2 Database

 - MySQL Driver

(3) Developer Tools 관련 dependencies

 - Lombok

 - Spring Boot DevTools

(4) 기타 dependencies

 - Thymeleaf

 - Validation

 - Spring Security

 - Spring Boot Actuator

(여기까지 설정 후 Explore를 누르면 build gradle 내용이 생성되어있는데 그냥 통째로 복사해서 기존 프로젝트의 build gradle에 삽입해도 된다 (접은 글))

더보기
plugins {
  id 'java'
  id 'org.springframework.boot' version '3.1.3'
  id 'io.spring.dependency-management' version '1.1.3'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
  sourceCompatibility = '17'
}

configurations {
  compileOnly {
    extendsFrom annotationProcessor
  }
}

repositories {
  mavenCentral()
}

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-actuator'
  implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
  implementation 'org.springframework.boot:spring-boot-starter-data-rest'
  implementation 'org.springframework.boot:spring-boot-starter-security'
  implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
  implementation 'org.springframework.boot:spring-boot-starter-validation'
  implementation 'org.springframework.boot:spring-boot-starter-web'
  implementation 'org.springframework.data:spring-data-rest-hal-explorer'
  implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
  compileOnly 'org.projectlombok:lombok'
  developmentOnly 'org.springframework.boot:spring-boot-devtools'
  runtimeOnly 'com.h2database:h2'
  runtimeOnly 'com.mysql:mysql-connector-j'
  annotationProcessor 'org.projectlombok:lombok'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
  testImplementation 'org.springframework.security:spring-security-test'
}

tasks.named('test') {
  useJUnitPlatform()
}

 - Generate를 눌러 프로젝트 생성 후 repository에 연결

 

[3. Use-case 작성]

1. 기본적인 기능들을 계획한다

 (1) 회원 로그인 : 인증기능, 로그인 실패시 로그인 화면으로 되돌아가는 기능 포함

 (2) 회원가입 기능

 (3) 게시판 보기 기능 : 게시판 정렬 기능, 게시판 검색 기능 포함

 (4) 작성 기능 : 게시글 작성 및 수정 기능. 댓글 작성 및 수정 기능 포함

 

2. Use case 작성 

 (1) draw.io (diagrams.net) 에 들어가서 Git 계정과 연동해준다

 (2) 새로운 다이어그램 만들기 클릭

 (3) 파일 형태 SVL로 바꾸기

 (4) 폴더 선택  : Board-practice/main/Document

 (5) 아래와 같이 usecase 작성

 (6) ctrl+s 누르면 깃 repository에 유스케이스 생성됨

 

[4. api설계]

- end-point url, http method, 해당 api 들이 어떤 역할을 하게 될지 미리 구성하여 문서화하고, 이를 기반으로 개발한다

- 이전에 작성한 유즈케이스를 참조하여 작성한다

- 조회시 /{아이디}를 붙여 단일건을 조회할 수 있다

- 난 스프레드시트에서 만들었음

API 설명 참조 

종류 url method 기능 입력 데이터 구상 설명
view
end-point
/ GET 루트 페이지
-
게시판 페이지로 이동
/error GET 에러 페이지  
/login GET 로그인 페이지  
/sign-up GET 회원 가입 페이지  
/articles GET 게시판 페이지  
/articles/{articld-id} GET 게시글 페이지  
/articles/search GET 게시판 검색 전용 페이지  
/articles/search-hashtag GET 게시판 해시태그 검색 전용 페이지  
api
/api/sign-up POST 회원 가입 id, 비밀번호, 이메일,
닉네임, 메모
# 메모: 추가적인 개인정보
/api/login GET 로그인 요청 id, 비밀번호  
/api/articles GET 게시글 리스트 조회 필터: 제목, 본문, id, 닉네임, 해시태그  
/api/articles/{article-id} GET 게시글 단일 조회    
/api/articles POST 게시글 추가 제목, 본문, id, 해시태그  
/api/articles/{article-id} PUT,
PATCH
게시글 수정 제목, 본문, 해시태그 # id는 바뀌면 안되므로 제외
/api/articles/{article-id} DELETE 게시글 삭제 게시글 id  
/api/articleComments GET 댓글 리스트 조회 필터: 본문, id 닉네임  
/api/articleComments/{article-comment-id} GET 댓글 단일 조회    
/api/articles/{article-id}/articleComments GET 게시글에 연관된 댓글 리스트 조회 필터: 본문  
/api/articles/{article-id}/articleComments/{article-comment-id} GET 게시글에 연관된 댓글 단일 조회    
/api/articles/{article-id}/articleComments POST 댓글 등록 본문, id  
/api/articles/{article-id}/articleComments/{article-comment-id} PUT,
PATCH
댓글 수정 본문  
/api/articles/{article-id}/articleComments/{article-comment-id} DELETE 댓글 삭제 댓글 id  

 

2 . 깃 칸반보드에 진행상황을 표기한다 (API설계 완료)

[마무리]

스프링 부트로 프로젝트를 생성했고 usecase 작성도 마쳤으므로 칸반보드의 Done으로 옮겨준다

다음에 도메인 설계를 할 것이므로 ready란에 옮겨준다