상똥이의 Back-End 공부방
[Board Project] 2. 프로젝트 생성 (스프링 이니셜라이저/ UML/ api 설계) 본문
목차
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 들이 어떤 역할을 하게 될지 미리 구성하여 문서화하고, 이를 기반으로 개발한다
- 이전에 작성한 유즈케이스를 참조하여 작성한다
- 조회시 /{아이디}를 붙여 단일건을 조회할 수 있다
- 난 스프레드시트에서 만들었음
종류 | 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란에 옮겨준다
'프로젝트 > 게시판 만들기' 카테고리의 다른 글
[Board Project] 6. 데이터베이스 연결 테스트 준비 (mokaroo/ MySQL/ JPA) (0) | 2023.10.09 |
---|---|
[Board Project] 5. 데이터베이스 연동하기(2) (annotation/ JPA) (0) | 2023.09.05 |
[Board Project] 4. 데이터베이스 연동하기 (MySQL/ JPA) (0) | 2023.09.05 |
[Board Project] 3. 도메인 설계 (ERD작성/ 자바 코드 작성) (0) | 2023.09.05 |
[Board Project] 1. Git 준비 (Git에서 폴더 생성/ kanban Board 활용) (0) | 2023.09.05 |