[SPRING] ResponseDTO

Response를 할 때 응답코드를 어떻게 보내야 좋은건지 알아보았다.

* CommonResponseDto.java

@NoArgsConstructor
@AllArgsConstructor
@Data
public class CommonResponseDto<T> {

      private int statusCode;
      private String status;
      private T data;

}

보통 statusCode만 리턴하는데, 공부하는 겸 statusCode에 대한 설명을 담은 status 변수를 담아주었다. 그리고 리턴할 데이터를 제네릭 타입으로 설정하여 어떤 데이터에 대해서도 인자로 받을 수 있도록 하였다.

* UserAPIController.java

@GetMapping("/user/dto")
public CommonResponseDto<String> 유저정보출력DTO(UserDto userDTO) {
      return new CommonResponseDto<>(HttpStatus.OK.value(), HttpStatus.OK.getReasonPhrase(),
              userDTO.toString());
}

쿼리스트링으로 받은 유저정보를 출력하는 메소드이며 이전 코드는 userDto.toString()을 리턴하였다면, 지금은 CommonResponseDto에 담아서 리턴하였다.

응답 

 

 @PostMapping("/user/save")
  public CommonResponseDto<?> 유저회원가입(@RequestBody UserDto userDto) {
        userService.saveUser(userDto);
        return new CommonResponseDto<>(HttpStatus.CREATED.value(),
                HttpStatus.CREATED.getReasonPhrase(), "회원가입 완료");
  }

여기서 리턴하는 타입인 CommonResponseDto<?>의 <?>는 리턴할 때 리턴 타입을 정하겠다는 말과 같다. 주로 에러코드가 발생하거나 분기설정을 해줄 때 평상시의 리턴타입과 다를 수 있는데 <?>을 사용하여 해결할 수 있다.

응답

 

제네릭타입 T와 ?의 사용법을 알게 되었다.

'🍃 스프링' 카테고리의 다른 글

[SPRING] H2 DB 연결 중 에러 정리  (0) 2024.01.15
[SPRING] JPA 순환 참조  (0) 2023.09.11
[SPRING] GET API Query String  (0) 2023.08.26
[SPRING] 컬렉션  (0) 2023.07.30
[SPRING] Entity, DTO  (0) 2023.07.24