오늘은 지난주에 작성해두었던 과제 ERD 다이어그램과 API 명세서를 바탕으로 API를 직접 만들어보는 시간을 가졌다. 지난 번에 작성한 것이 잘못되었다는 것을 깨닫고 다시 작성하였고, 사실 욕심도 조금 났는데 일단 기본적인 것부터 해보는 것이 중요한 것 같아서 가장 기초적인 것만 구현하는 것을 해보았다.
오늘 기초적인 것은 완료했기 때문에 다음 응용해야하는 것들은 내일부터 고민해보아야겠다. 여기에는 과제 진행했던 것을 간단하게 정리해보았다.
1. Spring 개인 과제
할 일(To Do) API 제작 개인 과제는 저번 주에 시작했지만 ERD 작성까지 마친 후에 전체적인 스프링 복습을 진행하느라 더 이상 진행하지 못했었다. 오늘 다시 처음부터 시작하여 API 만들기를 모두 마칠 수 있었다.
1-1. API 명세서와 ERD 다이어그램
지난 번 만들었던 API 명세서와 ERD 다이어그램이 잘못되었다는 것을 뒤늦게 깨닫게 되었다. 그리고 지금 완성한 것도 이 둘도 수정할 부분이 있다는 것을 지금은 알고있다. 하지만 일단 완성한 것은 올려두고 과제 step2를 진행하면서 수정해나갈 계획이다.
필수 구현 과제에는 기본적인 CRUD 기능만 있기 때문에 API 명세서와 ERD 다이어그램이 매우 단순하다. 따라서 더 설명을 덧붙이지는 않으려고 한다.
나는 과제를 약간 잘못 이해해서 작성일을 사용자로부터 받는 것으로 만들었다. 작성일을 날짜 형식으로 요청을 보낼 때 같이 보내야 한다. 이 부분은 다음 step 2를 할 때에는 DB에 데이터가 들어갈 때 그 시간이 저장되도록 바꿔볼 예정이다.
1-2. Swagger로 API 문서화 및 테스트 해보기
API 문서를 자동화해주는 Swagger를 이용해보았다. 워낙 간단한 API이다 보니 별 내용이 없다. 아래에 있는 사진이 전부이다.
선택 구현 과제인 step2를 진행하면 댓글 기능을 비롯해 여러가지가 추가되기 때문에 그때가 되면 문서가 가득차게 될 것 같다.
1-3. 시간순으로 ToDo(할 일) 정렬하기
필수 구현 과제의 요구사항 중 하나는 할 일(To Do) 목록을 작성일기준 시간순으로 내림차순으로 정렬하라는 것이었다.
정렬하는 법을 몰랐기 때문에 방법을 먼저 찾아보았고 쉽게 찾아서 사용할 수 있었다. 아래가 해당 코드이다.
// todoRepository는 JpaRepository를 상속받은 인터페이스이다
// date를 기준으로 내림차순 (DESC 대신에 ASC를 쓰면 오름차순)
todoRepository.findAll(Sort.by(Sort.Direction.DESC, "date"))
// date로 내림차순 정렬, date가 같을 경우 Id를 기준으로 내림차순 정렬
todoRepository.findAll(Sort.by(Sort.Direction.DESC, "date")
.and(Sort.by(Sort.Direction.DESC, "id")))
작성일이 같을 경우에는 id를 기준으로 내림차순으로 정렬하도록 했다. 아래처럼 잘 정렬되어 JSON으로 반환되는 것을 볼 수 있다.
[
{
"id": 12,
"title": "자료구조 학습하기",
"name": "전종서",
"description": null,
"date": "2024-05-13"
},
{
"id": 11,
"title": "이빨 닦기",
"name": "정우성",
"description": null,
"date": "2024-05-13"
},
{
"id": 5,
"title": "머리 자르기",
"name": "송강호",
"description": "긴 머리 짧게 자르기",
"date": "2024-05-13"
},
{
"id": 10,
"title": "알고리즘 학습하기",
"name": "고윤정",
"description": "DFS, BFS 마스터하기",
"date": "2024-05-12"
},
{
"id": 8,
"title": "Spring 학습하기",
"name": "한석규",
"description": "JPA 마스터하기",
"date": "2024-05-11"
},
{
"id": 7,
"title": "운동 가기",
"name": "조인성",
"description": null,
"date": "2024-05-10"
},
{
"id": 4,
"title": "맛집 방문하기",
"name": "전지현",
"description": "고기 맛집에 꼭 방문하기",
"date": "2024-05-09"
}
]
여기까지 필수 구현 사항에 대해서는 오늘 모두 작성을 완료해보았다.
Spring 공부할때는 머리가 좀 아팠는데 막상 API를 직접 만들어보니 꽤 재미있었다. 어서 선택 구현 과제들도 시도해보아야겠다.
2. 오늘 배운 것
- Spring 과제를 해보면서 전체적으로 돌아가는 사이클을 다시 한 번 쭉 경험할 수 있었다. 전체 그림을 더 잘 파악할 수 있게 된 것 같다.
- 코드 작성 이외에 기본적인 지식들이 탄탄히 받쳐줘야한다는 것을 알게되었다. 매일 일정시간을 내어서 CS 공부를 해야할 것 같다.
'오늘 배운 것' 카테고리의 다른 글
24-05-15 Spring 개인 과제 (3) (0) | 2024.05.15 |
---|---|
24-05-14 Spring 개인 과제 (2) (0) | 2024.05.14 |
24-05-12 네트워크 기본 지식 (0) | 2024.05.12 |
24-05-11 ERD 다이어그램 그리는 법 (0) | 2024.05.11 |
24-05-10 Spring 과제 시작 (0) | 2024.05.10 |