24/12/28(토)
//response
{
"id": 2,
"content": "빨래하기"
},
{
"id": 3,
"content": "청소기 돌리기"
}
]
// Request
- `GET` `/todos`
- Query params
- `titleId`
- 예: `localhost:8080/todos?titleId=3`
method가 Get인데, 여러개를 이미 받고 있으니까 RequestParams으로 받아 들어오는 값에 따라 다르게 호출해야한다.
//controller
@GetMapping("/todos")
public List<TodoResponse> getComplete(@RequestParam(required = false) Boolean isCompleted, Long todoTitleId) {
return todoService.read(isCompleted,todoTitleId);
}
read함수에 todoTitleId까지 같이 입력받아야한다.
//service
public List<TodoResponse> read(Boolean isCompleted, Long todoTitleId) {
if(isCompleted == null && todoTitleId == null){
return readAll();
}
if(todoTitleId == null){
return readComplete(isCompleted);
}
else return readContentInTitle(todoTitleId);
}
기존에 있던 read함수에 todoTitleId를 input으로 받아줘야한다. 그럼 생각할게 3가지가 된다.
isCompleted, todoTitleId 둘다 호출되지 않았을 때isCompleted가 호출될 때todoTitleId가 호출될때//service
private List<TodoResponse> readContentInTitle(Long todoTitleId) {
List<Todo> byTodoTitleId = todoRepository.findByTodoTitleId(todoTitleId);
return byTodoTitleId.stream().map(content->new TodoResponse(content.getContent(), content.getId())).toList();
}
List<Todo> findByTodoTitleId(Long todoTitleId);
byTodoTitleId 는 현재 할 일들의 목록이 들어있다. 그러면 내가 응답받고싶은 todoResponse의 형태로 만들어서 반환해준다.
해당 결과처럼 나오게 된다.
😐 느낀점
id는 항상 잘봐야한다. 왜냐면 id값으로 모든 데이터를 판별하기 때문에, id는 중요한 요소가 된다.