[GDG] 홍대 맛집 아카이빙 프로젝트 백엔드 개발 #2 - ResponseEntity 활용하기

2025. 7. 15. 00:50·팀 프로젝트/[2025][GDG]홍대 맛집 아카이빙 프로젝트

나중이 되면 달라질 수 있긴하지만..

지금 개발이 꽤 재밌다. 개발정보를 찾아보는 것도 재밌고..

열심히 해보자! 이럴 때 많이 배워놔야한다

 


ResponseEntity

오늘은 어제 한 작업에서 String, Map 형태로 리다이렉트 url과 상태코드를 반환하던 코드를 ResponseEntity를 이용하도록 바꿀 것이다.

 

ResponseEntity란..

HttpEntity를 상속한 클래스

HttpEntity는 HTTP 요청/응답에서 Http 헤더와 바디를 설정할 수 있는 클래스라는데.. ResponseEntity는 이 HttpEntity를 상속했으니 더 많은 기능이 있지 않을까 싶다.

 

ResponseEntity는 상태코드와 함께 Body에 데이터를 담아 반환하는 구조이다.

ResponseEntity의 Body에 Map이 들어면 Map이 반환되고, String이 들어가면 String이 반환되는 구조..

 

따라서 내가 어제 했던 코드에서

{
code : 200
message : "완료"
}

처럼 응답코드를 반환하고 싶다면 저렇게 JSON 오브젝트를 만든 후에 ResponseEntity의 body에 넣어 반환하면 된다.


기본적인 ResponseEntity를 만드는 형태는

ResponseEntity.status(200).body(data)

이제 저걸 new로 새 객체를 생성하거나 바로 return하면 된다.

status에는 응답코드로 설정될 숫자가 들어가고 body에는 body에 담아 보낼 data가 들어간다. 위의 예시에서의 응답코드가 data에 들어가야함

 

응답코드 예시 -> https://hocheon.tistory.com/68

 

HTTP Status code / HTTP 상태 코드 정리

클라이언트 - 서버 구조에서 클라이언트가 서버에게 request를 보내면 서버는 이에 대해 response를 보낸다. 모든 HTTP 응답 코드는 5개로 분류할 수 있다. => Status code의 첫 번째 숫자에 따라 response clas

hocheon.tistory.com

 

.status(200)에는 200 같은 숫자가 들어가면 어떤 뜻인지 자세히 알기 어렵다.

따라서 Spring에서 제공하는 enum인 HttpStatus.OK 등으로 사용한다.

 

HttpStatus

.OK -> 200

.BAD_REQUEST -> 400

.NOT_FOUND -> 404

.INTERNAL_SERVER_ERROR -> 500

..등이 있다고 한다. 우선은 200을 쓸거니 .OK로

 

 

또한 한 줄로 적는 방식은 생성자패턴이고

곧바로 return 할 때는 가독성이나 유지보수 등에 용이한 빌더패턴을 사용한다고 한다.

ResponseEntity
    .status(200)
    .body(data)

 

추가로 status나 body이외에도 Header나 Content-type도 수정할 수 있다고 하는데.. 아직 거기까지 알아보지는 않았다.

body에 들어갈 내용이 없을 때는 .build()를 사용한다.

 


원래는 String 형식으로 URL을 반환하여 리다이렉트 시켰고, oauthprovider에 규격에 맞지 않는 수가 들어온 경우 오류를 일으키도록 프로그래밍 되었으나

이렇게 응답코드와 이동할 url을 반환하는 것으로 변경했다.

성공

이러고 신나게 알바갔다가 포스트 내용을 저장안하고 지워버렸다.....


 

어쨌든 궁금한 것은..

이렇게 되면 구글 로그인 버튼을 누를 때 상태코드 반환해서 넘기고, 구글 로그인 후 다시 사이트로 돌아와서 상태코드를 반환하고.. 이렇게 상태코드를 반환하는 일이 잦아지는 방식의 프로그래밍이 옳을까란 생각을 했다. 이게 로그인이라는 간단한 과정이기에 상태코드 반환할 일도 적은 것이지 더욱 복잡한 일의 경우에는 상태코드를 반환할 일이 많아질 것 같다.

 

상태코드 반환시점에 대해서 GPT에게 물어보니..

"최종적인 의미가 있는 시점"에 주는 게 가장 좋습니다. 라고 한다.

또

"모든 return을 ResponseEntity로 할 필요는 없지만, 대부분의 경우엔 하는 게 좋아요"

라고한다. 예외경우는 그냥 String 같이 간단하게 반환하는 경우

상태코드 반환과 통제에 용이하다, 헤더 커스터마이징 등에 용이하다고한다. 

즉, 웬만한 경우에는 ResponseEntity로 반환하자는 것.

 

그렇다면 ResponseEntity로 값을 반환하되, 백엔드에서 곧바로 리다이렉트 되도록 코드를 수정했다.

 


ResponseEntity.location

location은 헤더에 들어가는 정보로, 리다이렉트할 링크가 어디에 있는지 명시해준다.

즉, 응답코드도 반환하고, ResponseEntity도 사용하고, 리다이렉트도 시켜주고

주된 특징으로는 응답코드가 300번대일 때만 작동하며, body에 내용이 들어가서는 안된다.

 

코드를 작성하고 돌려보니

 

아?

알고보니 API가 만료되었다고한다..

구글API 유효기간이 1시간이라는데 어제 됐던게 오늘 안되는 것은 당연지사..

 

뭐... 암튼 시간도 늦었고..

우선은 내일 다시 해보려고 한다.

 

내일도 화이팅

'팀 프로젝트 > [2025][GDG]홍대 맛집 아카이빙 프로젝트' 카테고리의 다른 글

[GDG]홍대 맛집 아카이빙 프로젝트 백엔드 개발 #5 - OAuth 최종점검  (0) 2025.07.18
[GDG] 개발코스 2주차 WIL  (1) 2025.07.17
[GDG]홍대 맛집 아카이빙 프로젝트 백엔드 개발 #4 - 오늘은 OAuth 끝내죠?  (7) 2025.07.17
[GDG]홍대 맛집 아카이빙 프로젝트 백엔드 개발 #3 - 구글 OAuth  (0) 2025.07.16
[GDG] 홍대 맛집 아카이빙 프로젝트 백엔드 개발 #1 - OAuth에 대해서...  (2) 2025.07.14
'팀 프로젝트/[2025][GDG]홍대 맛집 아카이빙 프로젝트' 카테고리의 다른 글
  • [GDG] 개발코스 2주차 WIL
  • [GDG]홍대 맛집 아카이빙 프로젝트 백엔드 개발 #4 - 오늘은 OAuth 끝내죠?
  • [GDG]홍대 맛집 아카이빙 프로젝트 백엔드 개발 #3 - 구글 OAuth
  • [GDG] 홍대 맛집 아카이빙 프로젝트 백엔드 개발 #1 - OAuth에 대해서...
Radiata
Radiata
개발을 합니다.
  • Radiata
    DDD
    Radiata
  • 전체
    오늘
    어제
    • 분류 전체보기 (211)
      • 신년사 (3)
        • 2025년 (2)
        • 2026년 (1)
      • CS (59)
        • JVM (12)
        • 백엔드 (20)
        • 언어구현 (1)
        • 객체지향 (1)
        • 논리회로 (5)
        • 컴퓨터구조 (9)
        • 데이터베이스 (1)
        • 컴퓨터 네트워크 (10)
      • 언어공부 (64)
        • Java | Kotlin (48)
        • JavaScript | TypeScript (9)
        • C | C++ (6)
      • 개인 프로젝트 (11)
        • [2025] Happy2SendingMails (3)
        • [2026] 골든리포트! (8)
        • [2026] 순수자바로 개발하기 (0)
        • 기타 이것저것 (0)
      • 팀 프로젝트 (29)
        • [2025][GDG]홍대 맛집 아카이빙 프로젝트 (29)
      • 알고리즘 (13)
        • 백준풀이기록 (11)
      • 놀이터 (0)
      • 에러 수정일지 (2)
      • 고찰 (24)
        • CEOS 23기 회고록 (2)
  • 블로그 메뉴

    • CS
    • 언어공부
    • 개인 프로젝트
    • 팀 프로젝트
    • 알고리즘
    • 고찰
    • 신년사
    • 컬러잇 개발블로그
  • 링크

    • 컬러잇 개발블로그
  • 공지사항

  • 인기 글

  • 태그

    144
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Radiata
[GDG] 홍대 맛집 아카이빙 프로젝트 백엔드 개발 #2 - ResponseEntity 활용하기
상단으로

티스토리툴바