Spring 입문 주차 8.12(금) ~ 8.18(목)
1. 개인 과제: 게시판 CRUD 기능을 하는 백엔드 서버 만들기, AWS 배포 2. 팀 과제: Spring 핵심 키워드 정리(필수 4개, 선택 4개) |
진행 계획
- 12일(금) Spring 핵심 키워드 정리
- 13일(토) Spring 핵심 키워드 정리
- 14일(일) 개인과제에 필요한 강의 수강 및 공부
- 15일(월) API 명세서 작성, Use Case 그리기
- 16일(화) 게시판 CRUD 기능 코드 작성
- 17일(수) 게시판 CRUD 기능 코드 작성
- 18일(목) 게시판 CRUD 기능 코드 작성 및 AWS 배포
1. 개인 과제 진행 상황
요구사항
|
1) Use Case 그리기
2) API 작성
기능 | Method | URL | Request | Response |
전체 게시글 목록 조회 | GET | /api/posts | - | { "createdAt" : "2022-08-15", "modifiedAt" : "2022-08-15", "id" : 1, "title" : "제목", "username" : "작성자", "content" : "내용" }, { "createdAt" : "2022-08-15", "modifiedAt" : "2022-08-15", "id" : 2, "title" : "제목", "username" : "작성자", "content" : "내용" } |
게시글 작성 | POST | /api/posts | { "title" : "제목", "username" : "작성자", "password" : "비밀번호", "content" : "내용" } |
{ "createdAt" : "2022-08-15", "modifiedAt" : "2022-08-15", "id" : 1, "title" : "제목", "username" : "작성자", "content" : "내용" } |
게시글 조회 | GET | /api/posts/{id} | - | { "createdAt" : "2022-08-15", "modifiedAt" : "2022-08-15", "id" : 1, "title" : "제목", "username" : "작성자", "content" : "내용" } |
게시글 비밀번호 확인 | POST | /api/posts/{id} | { "password" : "비밀번호" } |
{ "success" : true, "data" : null, "error" : null } |
게시글 수정 | PUT | /api/posts/{id} | { "title" : "수정 제목", "username" : "수정 작성자", "password" : "수정 비밀번호", "content" : "수정 내용" } |
{ "createdAt" : "2022-08-15", "modifiedAt" : "2022-08-15", "id" : 1, "title" : "수정 제목", "username" : "수정 작성자", "content" : "수정 내용" } |
게시글 삭제 | DELETE | /api/posts/{id} | - | { "success" : true, "data" : null, "error" : null } |
3) 관심사 분리
- Controller
PostRestController: 게시글 관련 컨트롤러
- Service
PostService : 게시글 수정
- Repository
PostRepository: 게시글 데이터 관리
- Dto
PostResponseDto: Post 응답 관련Dto
PostRequestDto: Post 요청 관련 Dto
- Entity
Post: 작성자(username), 글 제목(title), 내용(contents), 비밀번호(password)
Timestamped: 글 작성 및 수정 시간 확인
2. 새로 배운 것
1) API: 클라이언트-서버 간 약속, 클라이언트는 약속한 형식으로 서버에게 요청(Request)을 보내고, 서버가 요구사항을 처리하여 응답(Response)을 반환
2) REST(Representational State Transfer): 주소에 명사, 요청 방식에 동사(CRUD를 지칭)를 사용하여 의도를 명확히 드러냄을 의미
자원(URI): 잘 표현된 HTTP URI로 리소스(서비스를 제공하는 시스템 자원) 정의
행위(HTTP Method): HTTP메소드로 리소스에 대한 행위 정의
표현(Representations): 리소스는 JSON, XML과 같은 언어로 표현
- REST URL 주의사항
- 주소에 들어가는 명사들은 복수형을 사용 -> /course(x) /courses(o)
- 주소에 동사는 가급적 사용하지 않음 -> /accounts/edit(x) /accounts/put(o)
3) HTTP 메소드와 CRUD
HTTP 메소드 | 의미 | 역할 | 예시 |
POST | Create | 리소스 생성 | POST /courses → 강의 생성 요청 |
GET | Read | 해당 URI의 리소스 조회 | GET /courses → 강의 전체 목록 조회 요청 GET /courses/1 → ID가 1번인 강의 조회 요청 |
PUT | Update | 해당 URI의 리소스 수정 | PUT /courses/3 → ID가 3번인 강의 수정 요청 |
DELETE | Delete | 해당 URI의 리소스 삭제 | DELETE /courses/2 → ID 2번인 강의 삭제 요청 |
* CRUD: 데이터 관리의 기본 기능 생성 (Create), 조회 (Read), 변경 (Update), 삭제 (Delete)
4) DTO(Data Transfer Object): 데이터 사용 시 기존 클래스 사용하지않고 새로운 클래스 만들자
-> 데이터 읽기, 수정하기할 때 기존 클래스를 사용한다면 DB가 망가질 수도 있기 때문에 DTO를 완충재로 활용하는 것
3. 오늘 한 일 / 회고
- 개인 과제: Use Case 작성, API 작성
- 스프링 강의 듣기
4. TO-DO LIST
- 스프링 강의 완료
- 개인 과제: 게시판 CRUD 코드 작성하기
'개발 일지' 카테고리의 다른 글
[TIL]이노베이션 캠프 17일차 (0) | 2022.08.17 |
---|---|
[TIL]이노베이션 캠프 16일차 (0) | 2022.08.16 |
[WIL]이노베이션 캠프 2주차 (0) | 2022.08.14 |
[TIL]이노베이션 캠프 14일차 (0) | 2022.08.14 |
[TIL]이노베이션 캠프 13일차 (0) | 2022.08.13 |