현제의 현재이야기
[Spring] null 값 처리와 HTTP response 본문
BoardService.java
public Optional<Board> findById(Long id) {
return Optional.ofNullable(boardRepository.findById(id));
}
- 우선 BoardService에 있는 findById를 옵셔널로 바꿔준다.
- 이렇게 되면 없는 값을 검색할 때 null 값으로 반환됨
PostController.java
@GetMapping("/{id}")
public ResponseEntity<Board> getPost(@PathVariable Long id) {
Optional<Board> board = boardService.findById(id);
return board.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
- 그리고 컨트롤러에서 board 옵셔널 객체를 찾아준다.
- return을 할 때는 찾은 board 객체에 .map을 하여서 ResoponsEntitiy<Board>로 만들어준다.
- 그리고 ResponseEntity::ok는 ResponseEntity 클래스의 정적 ok 메서드에 대한 메서드 참조이다.
- 또한 지정된 매개변수를 응답 본문으로 사용하여 'ResponseEntity'를 반환한다.
- 만약 board가 null값이면 orElse가 호출되고 .notfound() 를 반환하는 객체를 .build()로 만들어준다.
제대로 있을 시
없을 시
그 외 http response 지정
@PostMapping("")
public ResponseEntity<Board> savePost(@RequestBody Board board) {
boardService.save(board);
return ResponseEntity.status(HttpStatus.CREATED).body(board);
}
- 반환 클래스를 ResponseEntity로 설정하고, .body에 객체를 담아서 같이 response에 담는다.
- 일단 옵셔널이 포함된 것은 ResponseEntity로 설정하고, 그 외는 이렇게 해야겠다.
- 왜.. 날짜는 null 값이지? 그리고 람다식과 필터링을 이용한 것도 스프링 입문에 있었는데 찾아봐야겠다.
'JAVA' 카테고리의 다른 글
[Spring] Json에 포함되는 필드 (0) | 2023.04.14 |
---|---|
[spring] FetchType에 대하여 (0) | 2023.04.13 |
[JAVA SPRING] 0314 TIL (0) | 2023.03.14 |
[JAVA] JAVA Static과 Python global과의 차이점 (0) | 2023.03.10 |
기초문법 1일차 (0) | 2023.03.08 |
Comments