현제의 현재이야기

[Spring] null 값 처리와 HTTP response 본문

JAVA

[Spring] null 값 처리와 HTTP response

현재의 현제 2023. 4. 7. 14:17

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::okResponseEntity 클래스의 정적 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