@PostMapping("/memos")
public MemoResponseDto createMemo(@RequestBody MemoRequestDto requestDto){
Memo memo = new Memo(requestDto);
// 현재 리스트가 비어있다면 (id = 1), 아니라면 (id = 마지막 id 값 + 1)
Long maxID = memoList.size()>0? Collections.max(memoList.keySet())+1 : 1;
memo.setId(maxID);
// 받아온 시각 설정
memo.setDate();
// id를 key 값으로 가지도록 리스트에 추가
memoList.put(memo.getId(), memo);
MemoResponseDto memoResponseDto = new MemoResponseDto(memo);
return memoResponseDto;
}
Spring 1주차 강의 영상을 참고해 CRUD 중 Create를 구현해 봤다.
title과 date가 제대로 나오지 않았다.
package com.sparta.spring_memo.dto;
import lombok.Getter;
@Getter
public class MemoRequestDto {
private String username;
private String contents;
}
public Memo(MemoRequestDto requestDto) {
this.username = requestDto.getUsername();
this.contents = requestDto.getContents();
}
RequestDto의 멤버변수와 Memo 생성자에서 title을 다루지 않았다는 것을 깨달았다.
그리고 이전에 사용했던 날짜 설정 함수를 그대로 가져오느라 함수명을 setDate()로 했더니 구분을 할 수 없었다.
public String timeNow() {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd h:mm:ss");
return dateTimeFormatter.format(LocalDateTime.now());
}
알아보기 쉽도록 함수 명을 바꾸고 MemoController에서
// 받아온 시각 설정
memo.setDate(memo.timeNow());
시각을 저장하는 방법을 바꿨다.
제목과 날짜가 제대로 나오는 것을 확인했다.
@GetMapping("/memos")
public List<MemoResponseDto> getMemos(){
// Map to List
// stream() -> 앞의 values()를 for 문처럼 하나씩 돌려줌
// stream()에 의해 하나씩 나오는 객체는 memo
// 그 memo를 하나의 MemoResponseDto 로 만들어줌
List<MemoResponseDto> responseDtoList = memoList.values().stream().map(MemoResponseDto::new).toList();
return responseDtoList;
}
Create와 마찬가지로 강의 영상을 참고해 구현했다.
잘 잘동하는 것을 확인할 수 있었다.