11장: 시스템

스프링 부트 컨트롤러가 POJO라면

public class TodoController {
    private final TodoService todoService;

    public ResponseEntity<TodoResponseDto> createTodo(TodoRequestDto todoRequestDto) {
        TodoEntity todo = todoRequestDto.toEntity();
        todoService.add(todo);
        TodoResponseDto todoResponseDto = TodoResponseDto.of(todo);
        return new ResponseEntity<>(todoResponseDto, HttpStatus.CREATED);
    }

    public ResponseEntity<List<TodoResponseDto>> searchAll() {
        List<TodoEntity> result = todoService.searchAll();
        List<TodoResponseDto> todoList = result.stream().map(e -> TodoResponseDto.of(e)).toList();
        return new ResponseEntity<>(todoList, HttpStatus.OK);
    }

    public ResponseEntity<TodoResponseDto> searchById(@PathVariable Long id) {
        TodoEntity result = todoService.searchById(id);
        TodoResponseDto todoResponseDto = TodoResponseDto.of(result);
        return new ResponseEntity<>(todoResponseDto, HttpStatus.OK);
    }

    public ResponseEntity<TodoResponseDto> updateTodo(@PathVariable Long id, @Valid @RequestBody TodoRequestDto todoRequestDto) {
        TodoEntity result = todoService.searchById(id);
        todoService.updateTodo(result, todoRequestDto.getTitle(),todoRequestDto.getCompleted());
        TodoResponseDto todoResponseDto = TodoResponseDto.of(result);
        return new ResponseEntity<>(todoResponseDto, HttpStatus.OK);

    }

    public ResponseEntity<TodoResponseDto> deleteTodo(@PathVariable Long id) {
        TodoEntity result = todoService.searchById(id);
        todoService.deleteTodo(result);
        return ResponseEntity.noContent().build();
    }
}

어노테이션 기반으로 HTTP 통신에 이용되는 컨트롤러 객체

@Slf4j
@RestController
@RequestMapping("/todos")
@RequiredArgsConstructor
public class TodoController {
    private final TodoService todoService;


    @PostMapping("")
    public ResponseEntity<TodoResponseDto> createTodo(@Valid @RequestBody TodoRequestDto todoRequestDto) {
        TodoEntity todo = todoRequestDto.toEntity();
        todoService.add(todo);
        TodoResponseDto todoResponseDto = TodoResponseDto.of(todo);
        return new ResponseEntity<>(todoResponseDto, HttpStatus.CREATED);
    }

    @GetMapping("")
    public ResponseEntity<List<TodoResponseDto>> searchAll() {
        List<TodoEntity> result = todoService.searchAll();
        List<TodoResponseDto> todoList = result.stream().map(e -> TodoResponseDto.of(e)).toList();
        return new ResponseEntity<>(todoList, HttpStatus.OK);
    }


    @GetMapping("{id}")
    public ResponseEntity<TodoResponseDto> searchById(@PathVariable Long id) {
        TodoEntity result = todoService.searchById(id);
        TodoResponseDto todoResponseDto = TodoResponseDto.of(result);
        return new ResponseEntity<>(todoResponseDto, HttpStatus.OK);
    }

    @PatchMapping("{id}")
    public ResponseEntity<TodoResponseDto> updateTodo(@PathVariable Long id, @Valid @RequestBody TodoRequestDto todoRequestDto) {
        TodoEntity result = todoService.searchById(id);
        todoService.updateTodo(result, todoRequestDto.getTitle(),todoRequestDto.getCompleted());
        TodoResponseDto todoResponseDto = TodoResponseDto.of(result);
        return new ResponseEntity<>(todoResponseDto, HttpStatus.OK);

    }

    @DeleteMapping("{id}")
    public ResponseEntity<TodoResponseDto> deleteTodo(@PathVariable Long id) {
        TodoEntity result = todoService.searchById(id);
        todoService.deleteTodo(result);
        return ResponseEntity.noContent().build();
    }
}

Last updated