Spring boot (3) - Enum & ResponseEntitiy

이민우·2023년 6월 27일
0

오늘은 Spring boot 에서 Enum을 사용해보고 기록해본다.

Spring boot를 회원가입 기능을 구현하던 중 요구사항에서 클라이언트의 데이터를 받고 성공적으로 데이터베이스에 데이터를 저장하게 되면 클라이언트에게 성공 메세지와 상태코드를 반환해줘야 했다.

기능을 구현하면서 중요했던 점은 상태코드를 어떤식으로 받아와서 클라이언트에 반환할지 였다.
찾은 방법은 ResponseEntity 였다.

ResponseEntity
ResponseEntity는 어떠한 상황에 대한 상태와 데이터들 반환해주는 것이라고 설명하고싶다 이렇게 설명한 이유는 코드를 보며 살펴보자.

EnumDto

UserService

우선 EnumDto는 ResponseEntity를 이용했을때 클라이언트에게 반환할 데이터를 나타낸것이고
UserService는 클라이언트가 회원가입을 위해 데이터를 보내면 그 데이터들이 데이터베이스에 이미 있는지 판단해 회원가입 여부를 결정하는 코드이다.

앞선 설명에서 ResponseEntity를 설명한 이유는 확실한 이해를 하지못한 이유도 있지만 위의 예시 코드에서 파랑색으로 표시된 곳의 코드를 보면 ResponseEntity를 선언하고 유저에게 반환할 데이터와 상태코드를 인자로 두고 리턴하면 인자로 준 상태코드(ex 200, 400)상태로 유저에게 데이터를 반환해준다.

결과를 살펴보면.

위와같이 200 상태를 보여주고 데이터는 설정한 데이터로 보내준다.

전체적인 결과를 살펴보자

빨강생으로 표시된 부분에서 정의된 url 로 노랑색으로 표시부분의 데이터를 클라이언트가 보내주면 UserService에서 데이터의 유무를 판단한 후 ResponseEntity를 선언해 리턴해주고 초록색으로 표시된 부분의 200 상태 코드와 성공 데이터를 보내주게된다.

개념적으로 설명한건 아니지만 ResponseEntity가 어떤 방식으로 동작하는 지는 알 수 있게 설명을 하고자 하였다.

물론 ResponseEntity를 생성할때 인자에 header 받는 등의 추가적인 생성 방법과 사용 방법이 있으니 ResponseEntity에 대한 추가적인 공부가 필요하다.

위의 상황에선 단순히 클라이언트가 보내온 요청에대한 결과를 프론트엔드에 보내주는 것을 목적으로 한것으로 위와같이 이해한 내용만으로 해결 할 수 있었다.

Enum
Enum 은 프로젝트를 진행할때 상수로 지정해야할 데이터를 정의 하는것이라고 설명하고 싶다.

이러한 Enum에 대해 알아보게 된것은 사용자에게 상태코드를 반환할때 200,400 과같은 숫자 데이터가 아닌 ok 와같은 데이터가 보내지는 것을 해결하기 위해서 였다.

코드를 보며 살펴보자.

위의 코드로 살펴보자면 enum을 선언해 클레스를 선언하고 OK, BAD_REQUEST와 같이 상수를 표현할 데이터를 표시해준다.
다음으로 상수가 나타내는 값을 지정하기 위한 String authority를 선언해주고 생성자를 생성할때 인자로 받게 구현한다.
또한 static 형태로 메소드를 선언하고 상수가 나타내는 값을 200, 400 과 같이 선언해준다.

이와 같이 구현하면 OK, BAD_REQUEST 는 포함된 클레스가 선언될 수 있는 다른 클레스에서는 StatusEnum.OK 와 같이 선언 후 사용할 수 있다.

처음에 선언한 OK(Authorty.OK) 의 뜻은 OK 가 Authorty.OK라는 것을 나타낸다고 생각한다.
그래서 위에서 선언한 getAuthority()와 같은 메서드로 OK(Authorty.OK) 안의 Authorty.OK값을 조회할 수 있다.
Authorty.OK 이 의미하는 값은 200 으로 static을 선언한 메소드를 확인하면 알 수 있다.

이러한 메소드를 사용해서 EnumDto를 구현할때 생성자를 생성할때 인자로 받은 Enum 데이터의 getAuthority()의 값을 갖게한다면 위에서 설명한 문제점을 해결하고 200,400 과같은 숫자 데이터로 결과를 나타낼 수 있다.

마무리
완벽하게 이해한 기능으로 문제를 해결한것은 아니지만 ResponseEntity나 Enum과 같은 기능이 어떤식으로 사용하고 어떠한 상황에 사용되는 이해 하는것만으로도 많은 발전이 있었다고 생각하고 추가적인 공부를 통해 완전히 이해한다면 많은 곳에 활용할 수 있을것 같다.

profile
개린이

0개의 댓글

관련 채용 정보