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는 두 객체가 같은 객체인지를 확인한다.
- equals, hashcode 메소드를 자동 생성시켜 준다.
- @RequiredArgsConstructor
- 바로 아래에 설명함.
- @NoArgsConstructor
- 기본 생성자를 생성한다.
- @RequiredArgsConstructor
- final / Notnull과 같은 필수 정보를 세팅하는 생성자를 생성한다.
- @AllArgsConstructor
- 전체 변수를 생성하는 생성자를 생성한다.
- NoArgsConstructor / RequiredArgsConstructor / AllArgsConstructor의 경우는 해당하는 생성자들을 만들어 준다.
- NonNull, null 등을 작성하는 상황에 다시 설명하겠다.
2. Annotation
- @RequestParam
- defaultValue
- 기본 값이 들어오지 않을 때, 여기 입력한 값으로 설정해 준다.
- required
- 아무런 파라미터가 들어오지 않아도 되게 해 준다.
- 위의 두 가지가 사용되었기 때문에, 이전과는 다르게 이번 실습에서는 동일한 url로 GET해 주었는데 결과가 return될 수 있었다.
- defaultValue
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는 이런 것이다.
다른 내용들도 상황에 맞게 사용해주면 된다.
'백엔드 공부 > Spring Boot' 카테고리의 다른 글
save랑 saveAll(feat. Transactional) (0) | 2023.01.18 |
---|---|
lucy필터로 xss 방어하기(feat JSON, time, 이모지) (0) | 2022.06.27 |
Spring boot를 통한 REST API구현 - 실습(3) (0) | 2022.02.28 |
Spring boot를 통한 REST API구현 - 이론(2) (0) | 2022.02.28 |
Spring boot를 통한 REST API구현 - 실습(2) (0) | 2022.02.28 |