각각의 메모는 식별자(id), 제목(title), 내용(contents)으로 구성되어 있다.
Memo 객체 생성이 필요하다.
DTO 설계
각각의 메모는 식별자(id), 제목(title), 내용(contents)으로 구성되어 있다.
Memo 객체 생성이 필요하다.
[실습]
Memo 클래스 생성
/entity/Memo.java
@Getter
@AllArgsConstructor
public class Memo {
private Long id;
private String title;
private String contents;
}
Memo DTO 클래스 생성
/dto/MemoRequestDto.java
/dto/MemoResponseDto.java
@Getter
public class MemoRequestDto {
private String title;
private String contents;
}
@Getter
public class MemoResponseDto {
private Long id;
private String title;
private String contents;
}
5. 메모 생성 기능
[실습]
MemoController 클래스 ( /controller/MemoController.java )
memoList 속성 추가
createMemo() 메서드 추가
@RestController
@RequestMapping("/memos")
public class MemoController {
private final Map<Long, Memo> memoList = new HashMap<Long, Memo>();
@PostMapping
public MemoResponseDto createMemo(@RequestBody MemoRequestDto dto) {
// 식별자가 1씩 증가 하도록 만듦
Long memoId = memoList.isEmpty() ? 1 : Collections.max(memoList.keySet()) + 1;
// 요청받은 데이터로 Memo 객체 생성
Memo memo = new Memo(memoId, dto.getTitle(), dto.getContents());
// Inmemory DB에 Memo 저장
memoList.put(memoId, memo);
return new MemoResponseDto(memo);
}
}
MemoResponseDto ( /dto/MemoResponseDto.java )
생성자 추가
@Getter
public class MemoResponseDto {
private Long id;
private String title;
private String contents;
public MemoResponseDto(Memo memo) {
this.id = memo.getId();
this.title = memo.getTitle();
this.contents = memo.getContents();
}
}
[실습 결과]
6. 메모 조회 기능
[실습]
MemoController 클래스 ( /controller/MemoController.java )
findMemoById() 메서드 추가
@RestController
@RequestMapping("/memos")
public class MemoController {
private final Map<Long, Memo> memoList = new HashMap<Long, Memo>();
...
@GetMapping("/{id}")
public MemoResponseDto findMemoById(@PathVariable Long id) {
Memo memo = memoList.get(id);
return new MemoResponseDto(memo);
}
}
[실습 결과]
7. 메모 수정 기능
[실습]
MemoController 클래스 ( /controller/MemoController.java )
updateMemoById() 메서드 추가
@RestController
@RequestMapping("/memos")
public class MemoController {
private final Map<Long, Memo> memoList = new HashMap<Long, Memo>();
...
@PutMapping("/{id}")
public MemoResponseDto updateMemoById(@PathVariable Long id, @RequestBody MemoRequestDto dto) {
Memo memo = memoList.get(id);
memo.update(dto);
return new MemoResponseDto(memo);
}
}
Memo 클래스 ( /entity/Memo.java )
update() 메서드 추가
@Getter
@AllArgsConstructor
public class Memo {
private Long id;
private String title;
private String contents;
public void update(MemoRequestDto requestDto) {
this.title = requestDto.getTitle();
this.contents = requestDto.getContents();
}
}
[실습 결과]
8. 메모 삭제 기능
[실습]
MemoController 클래스 ( /controller/MemoController.java )
deleteMemo() 메서드 추가
@RestController
@RequestMapping("/memos")
public class MemoController {
private final Map<Long, Memo> memoList = new HashMap<Long, Memo>();
...
@DeleteMapping("/{id}")
public void deleteMemo(@PathVariable Long id) {
memoList.remove(id);
}
}