백엔드 공부/Spring Boot

Spring boot를 통한 REST API구현 - 이론(3)

철매존 2022. 2. 28. 03:34
728x90

Spring boot로 간단한 rest api를 구현하여 보자!!

Spring boot를 통한 REST API의 구현 - 실습(3)에 관한 이론과 내용들에 관한 글이다.

관련 내용

1. Lombok

개념

  • Lombok이란, 반복해서 사용되는 Annotation을 하나로 묶어서 자동으로 작성해주는 라이브러리이다.
  • 자주 쓰이는 내용들을 한꺼번에 적용할 수 있고 긴 코드를 줄여주기 때문에 생산성에 큰 도움이 되지만, 생각보다 큰 단점이 존재한다.
    • 이 단점에 관해서는 이후에 단점이 발생하게 되는 타이밍에 다시 적겠다.
      • 이게 꼭 그 상황이 터져야 비로소 이해하게 되는 것 같다.

사용

  • @Data
    • @Getter / @Setter / @ToString / @EqualsAndHashCode / @RequiredArgsConstructor 을 합쳐놓은 어노테이션
    • @Getter
      • Getter메소드를 생성한다.
    • @Setter
      • Setter메소드를 생성한다.
    • @ToString
      • 클래스 필드에 맞추어 toString메소드를 생성시켜 준다.
      • 출력할 때에 하나하나 toString을 사용할 필요가 없도록 한다.
      • 참고로 JPA를 사용하는 일이 있다면, 여기서 종종 문제가 발생할 것이다.
    • @EqualsAndHashCode
      • equals, hashcode 메소드를 자동 생성시켜 준다.
        • equals는 두 객체의 내용이 같은지, hashcode는 두 객체가 같은 객체인지를 확인한다.
    • @RequiredArgsConstructor
      • 바로 아래에 설명함.
  • @NoArgsConstructor
    • 기본 생성자를 생성한다.
  • @RequiredArgsConstructor
    • final / Notnull과 같은 필수 정보를 세팅하는 생성자를 생성한다.
  • @AllArgsConstructor
    • 전체 변수를 생성하는 생성자를 생성한다.
  • NoArgsConstructor / RequiredArgsConstructor / AllArgsConstructor의 경우는 해당하는 생성자들을 만들어 준다.
    • NonNull, null 등을 작성하는 상황에 다시 설명하겠다.

2. Annotation

  • @RequestParam
    • defaultValue
      • 기본 값이 들어오지 않을 때, 여기 입력한 값으로 설정해 준다.
    • required
      • 아무런 파라미터가 들어오지 않아도 되게 해 준다.
    • 위의 두 가지가 사용되었기 때문에, 이전과는 다르게 이번 실습에서는 동일한 url로 GET해 주었는데 결과가 return될 수 있었다.

3. DTO

일단 DTO란 Data Transfer Object이다.
이에 관해서는 해당 게시글을 확인하면 간단한 개념과 사용법을 알 수 있을 것이라 생각한다.

우리는 하나의 요청에 대해 여러 개의 응답을 갖는다.
이 모든 응답을 return해 주기 위해 이를 한꺼번에 저장해서 보내야 할 것이다.

user의 이름, 이메일 주소를 갖는 DTO를 만들고 이를 불러와 준다.

이 DTO에는 @setter가 존재하기 때문에 setName과 setEmail은 자동으로 만들어져 있을 것이다.

그렇기 때문에 그 setter를 사용하여 값들을 세팅해 주고, 이후 ResponseEntity를 통해 return해주면 된다.

3. ResponseEntity

사용자의 request에 대한 응답 데이터를 포함하여 보내주는 클래스이다.
참고로 RequestEntity랑 ResponseEntity는 HttpEntity 클래스를 상속받고 있다.
-> HTTP요청(Request), 응답(Response)에 해당하는 Header와 Body를 포함한다.

코드의 ResponseEntity의 위에 커서를 올리고 Ctrl + 클릭 해 보면 이와 관련한 내용이 쭈루룩 나온다.

 

 

그 중에 27번 Line을 확인해 보자. body와 http status를 보내 줄 수 있다.
그렇다면 위에서 값들을 set해준 DTO를 body에 넣고, http status를 통해 제대로 값이 전달되었다고 보내 주면 될 것이다.

참고로 저기서 HttpStatus.OK는 이런 것이다.


다른 내용들도 상황에 맞게 사용해주면 된다.