5.1 날씨 조회 API 작성
Ex) 조회 - Read
- repository에 함수 만들기
List<Diary> findAllByDate(LocalDate date);
- service
<hide/>
public List<Diary> readDiary(LocalDate date) {
return diaryRepository.findAllByDate(date);
}
- Controller - GetMapping
<hide/>
@GetMapping("/read/diary")
List<Diary> readDiary(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date){
return diaryService.readDiary(date);
}
Note) 실행 결과 - GET send
Ex) 날짜 범위를 정해서 여러 개의 일기를 가져오기 - Read
- Ctrl - readDiaries()
<hide/>
@GetMapping("/read/diaries")
List<Diary> readDiaries(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate,
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate ){
return diaryService.readDiaries(startDate, endDate);
}
- Service
- readDiaries()
<hide/>
public List<Diary> readDiaries(LocalDate startDate, LocalDate endDate) {
return diaryRepository.findAllByDateBetween(startDate, endDate);
}
- send: http://localhost:8080/read/diaries?startDate=2022-08-01&endDate=2022-08-31
Note) 실행 결과
-정해진 기간 안에 쓴 일기 목록이 나온다.
5.2 날씨 일기 작성 및 수정하기
Ex) Update - 수정하기
- Ctrl - updateDiary()
- 수정하는 날짜의 일기 중 가장 첫 번째를 수정한다고 가정
<hide/>
@PutMapping("/update/diary")
void updateDiary(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date, @RequestBody String text){
diaryService.updateDiary(date, text);
- Service - updateDiary()
<hide/>
public void updateDiary(LocalDate date, String text) {
Diary nowDiary = diaryRepository.getFirstByDate(date);
nowDiary.setText(text);
diaryRepository.save(nowDiary);
}
- getFirstByDate()
Diary getFirstByDate(LocalDate date);
Note) 실행 결과
- 위 창에서 send를 누르고 나서 get으로 조회하면 가장 첫 일기가 위 내용대로 수정된 걸 확인 가능
5.3 날씨 일기 삭제 API 작성하기
Ex) 삭제 - Delete
- Ctrl - delete()
<hide/>
@DeleteMapping("/delete/diary")
void deleteDiary(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date){
diaryService.deleteDiary(date);
}
- Service - deleteDiary()
<hide/>
public void deleteDiary(LocalDate date) {
diaryRepository.deleteAllByDate(date);
}
- Repo
- @Transactional을 추가한다. 어노테이션을 붙이지 않으면 모든 diary가 아니라 하나의 다이어리만 삭제된다.
- 추가 기능: 테스트 과정에서 데이터베이스의 상태가 변경되지 않기를 바라는 경우에 붙인다.
- @Transactional을 추가한다. 어노테이션을 붙이지 않으면 모든 diary가 아니라 하나의 다이어리만 삭제된다.
<hide/>
@Transactional
void deleteAllByDate(LocalDate date);
<hide/>
http://localhost:8080/delete/diary?date=2022-08-01
Note) 실행 결과 - 2022-08-01의 모든 다이어리가 정상으로 삭제된다.
출처 - 제로베이스 백엔드 스쿨 (김조현 강사님)
'Spring Projcect > 날씨 일기 프로젝트' 카테고리의 다른 글
Chapter 07. 날씨 저장 스케쥴링 (0) | 2022.09.01 |
---|---|
Chapter 06. Spring Transaction(스프링 트랜잭션) (0) | 2022.08.31 |
Chapter 04. 날씨 데이터 저장하기 (0) | 2022.08.31 |
Chapter 03. DB에 작업하기 (0) | 2022.08.30 |
Chapter 02. 프로젝트 준비하기 (0) | 2022.08.30 |