스프링 5주차 실습..

보통 식별자는 안전하게 다루기 위해서 Long 타입을 많이 사용한다.
DTO
요청 데이터를 처리하는 객체는 일반적으로 RequestDto로 명명
응답 데이터를 처리하는 객체는 일반적으로 RequestDto로 명명
메모 클래스를 생성하기 위해서 클라이언트로부터 받아야 할 데이터
title과 contents
id는 서버에서 관리
MemoRequestDto
요청 받을 데이터 입력
예)
private String title;
private String contents; // = 요청받을 데이터는 타이틀과 컨텐츠 입니다
MemoResponseDto
메모 객체 생성되고 나서 저장될 때는 실제로 식별자가 존재할 거라
id, title, memo 모두 필요
MemoController
데이터 형태를 JSON으로 통신을 할 것이기 때문에 @RestController 사용
자료구조를 사용해서 임시로 저장
private final Map<Long, Memo> memoList = new HashMap<>(); // 초기화
초기화 해주면 memoList라는 빈 Map 자료구조가 생성
호출해서 사용할 api를 만들어줘야함 메서드로
응답할 데이터는 ResponseDto로 만든다고 했기 때문에 리턴타입을 MemoResponseDto로 만들어줌
클라이언트로부터 JSON 데이터를 요청 받았을 때 파라미터로 바로 바인딩 하는 방법
-> @RequestBody 사용
Inmemory
자료구조에 저장해서 사용할 것이기 때문에 프로젝트가 실행되었다가 종료될 때 memoList 안에 저장된 모든 데이터가 다 지워질 것이기 때문에 Inmemory 라고 표현
// 식별자가 1씩 증가하도록 만듦
Long memoId = memoList.isEmpty() ? 1 : Collections.max(memoList.keySet()) + 1;
Collections.max() 안에 들어있는 값 중 최대 값을 꺼냄
memoList.keySet() memoList 안의 키 값들을 꺼냄
// 요청받은 데이터로 Memo 객체 생성
요청 받을 때는 ResponseDto 형태로 받았기 때문에 Memo 객체로 바꿔줘야 함
Memo memo = new Memo(memoId, dto.getTitle(), dto.getContents()); // Memo 타입의 변수로 받아준다.
// Inmemory DB에 Memo 저장
memoList.put(memoId, memo);
return new MemoResponseDto(); // 응답하는 데이터는 MemoResponseDto 형태로 전달
MemoResponseDto 돌아가서 생성자 생성
매개변수로 메모 객체 그대로 받아줌
public MemoResponseDto(Memo memo){
this.id = memo.getId();
this.title = memo.getTitle();
this.contents = memo.getContents();
}
메모 객체가 그대로 반환되는게 아니라 ResponseDto형태로 바껴서 응답이 되어야 함
식별자를 파라미터로 바인딩할 때 @PathVariable
ResponseEntity 메모를 생성하는 api에서 상태코드를 반환할 수 있게 만들어줌
implements
interface를 구현하기 위해서 사용
뒤로 갈수록 머리가 하얘진다..
'TIL' 카테고리의 다른 글
| TIL 241106 (0) | 2024.11.06 |
|---|---|
| TIL 241105 (0) | 2024.11.05 |
| TIL 241102 (0) | 2024.11.02 |
| TIL 241101 (0) | 2024.11.01 |
| TIL 241031 (0) | 2024.10.31 |