HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
팀 09 : 눈떠보니개발자
팀 09 : 눈떠보니개발자
/
공통 response 포맷 설정
공통 response 포맷 설정
공통 response 포맷 설정

공통 response 포맷 설정

Created time
Feb 14, 2024 06:37 AM
github link
ID
11
개발 중요도
1
noti
Status
In progress
Summary
스프린트
S1
누가할꺼임;
전체
Tags

ResponseEntity vs Custom ResponseEntity


  • ResponseEntity
    • 정형화된 형식으로 보내주기
    •  
notion image
 
  • Custom ResponseEntity
    • 원하는 형식을 만들어서 보낼 수 있음!
notion image
 
 
++ ResponseEntity 를 써서 보내주기
 
++ data 안에 넣어서 보내주면 aop 를 써서 일괄로 묶어서 보내주기..? ++ id 보내줄때도 바로 보내기 vs object 로 감싸서 보내기
 
++ 만약 void 한 메서드라면 상태코드만 보내기? → 이때 공통 response 타입이 있어야 깔끔할 것 같음
 
{ "timestamp": "2024-02-17T12:09:16.638661", "statusCode": 200, "code": "0000000", "message": "성공", "data": { //여기에 데이터가 추가되는건 어떨까요? } }
공통 Response 포맷
 

머기업 레퍼런스

네이버

네이버 오류 반환 포맷
네이버 오류 반환 포맷
 
네이버 응답 Reponse 포맷
네이버 응답 Reponse 포맷
 
 

카카오

GEO
notion image
notion image
 
KoGpt
notion image
 
토큰 삭제
notion image
 
id 값을 반환 할때
notion image

GOOGLE

 
표준 메서드
표준 메서드  |  Cloud API  |  Google Cloud
이 장에서는 표준 메서드인 List, Get, Create, Update, Delete 개념을 정의합니다. 표준 메서드는 복잡성을 줄일 뿐만 아니라 일관성을 높이는 효과가 있습니다. Google API 저장소에서 제공되는 API 메서드의 70% 이상이 표준 메서드이므로 더욱 쉽게 학습하고 사용할 수 있습니다.
표준 메서드  |  Cloud API  |  Google Cloud
https://cloud.google.com/apis/design/standard_methods?hl=ko
표준 메서드  |  Cloud API  |  Google Cloud
notion image
 
Exception
{ "error": { "code": 400, "message": "API key not valid. Please pass a valid API key.", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "API_KEY_INVALID", "domain": "googleapis.com", "metadata": { "service": "translate.googleapis.com" } } ] } }
 

Microsoft

github.com
https://github.com/microsoft/api-guidelines/blob/vNext/azure/Guidelines.md
{ "kind": "rectangle", "x": 100, "y": 50, "width": 10, "length": 24, "fillColor": "Red", "lineColor": "White", "subscription": { "kind": "free" } }
{ "value": [ { "id": "Item 01", "etag": "\"abc\"", "price": 99.95, "sizes": null }, { … }, { … }, { "id": "Item 99", "etag": "\"def\"", "price": 59.99, "sizes": null } ], "nextLink": "{opaqueUrl}" }
Exception
{ "error": { "code": "InvalidPasswordFormat", "message": "Human-readable description", "target": "target of error", "innererror": { "code": "PasswordTooShort", "minLength": 6, } } }
 
Ref.

[REST API] Spring Boot로 REST API 프로젝트 (5)-사용자 정의 ResponseEntity
이전 내용↓↓↓ 2023.11.22 - [Web Application/Backend] - [REST API] Spring Boot로 REST API CRUD 간단 구현 (4)-예외처리/handle Exception [REST API] Spring Boot로 REST API CRUD 간단 구현 (4)-예외처리/handle Exception 이전 내용↓↓↓ 2023.11.13 - [Web Application/Backend] - [REST API] Spring Boot로 REST API CRUD 간단 구현 (3) [REST API] Spring Boot로 REST API CRUD 간단 구현 (3) 이전 내용↓↓↓ 2023.11.11 - [Web Application/Backend] - [REST API] S..
[REST API] Spring Boot로 REST API 프로젝트 (5)-사용자 정의 ResponseEntity
https://im-gonna.tistory.com/89
[REST API] Spring Boot로 REST API 프로젝트 (5)-사용자 정의 ResponseEntity
Api 정상, 에러 응답 공통 포맷 개발
정상처리 및 오류처리에 대한 API 서버 공통 응답 포맷을 개발해보도록 하겠습니다. 공통 포맷을 개발하면 아래와 같은 장점이 있습니다. Api 서버는 정상, 에러에 대한 응답의 포맷이 동일하며 어떠한 응답도 공통포맷 형태로 반환하면 됩니다. Api를 사용하는 클라이언트는 공통 포맷을 보고 정상응답, 에러를 구분할 수 있습니다. 1. 응답 포맷 요구사항 공통 응답에 대한 요구사항은 다음과 같습니다. 정상, 오류처리 모두 success 필드를 포함합니다. 정상처리라면 true, 오류처리라면 false 값을 출력합니다. 정상처리는 response 필드를 포함하고 error 필드는 null 입니다. 응답 데이터는 객체로 표현됩니다. 오류처리는 error 필드를 포함하고 response 필드는 null 입니다. ..
Api 정상, 에러 응답 공통 포맷 개발
https://codinghack.tistory.com/78
Api 정상, 에러 응답 공통 포맷 개발
웹 API 디자인 모범 사례 - Azure Architecture Center
플랫폼 독립성과 서비스 진화를 지원하는 웹 API 설계를 위한 모범 사례를 알아봅니다.
웹 API 디자인 모범 사례 - Azure Architecture Center
https://learn.microsoft.com/ko-kr/azure/architecture/best-practices/api-design
웹 API 디자인 모범 사례 - Azure Architecture Center
 
 

결론

 
✔️
- 요청 성공 시 HTTP 상태 코드 200과 함께 요청에 대한 응답 본문(response body)이 반환되고, 요청이 실패한 경우 code와 msg로 이루어진 에러 코드를 반환합니다. ⇒ 요청과 error 응답 포맷 별개 - 성공 시 → response data + 상태코드 200 id 값, List 는 Object 로 한번 감싸서 전달 삭제 시 : 상태코드만 전달 or id 값만 전달 - 실패 시 →
notion image
 
 
✔️
Naver - 요청 성공 시 → resultcode + response data - 요청 실패 시 → errorCode + errorMsg - List에 대한 응답 → 일괄적으로 “data”로 묶어서 전달하는 듯!
notion image
notion image
notion image
 
⚠️
- 요청 성공시 → response data - 요청 실패시 → errorCode + errorMsg
 

 
이 부분만 보고 피드백 주시면 좋을 것 같아효,,!

멘토님 봐주세요… 흑흑 골라주세요😭 

♻️
확정 된 사안 1. id 값은 object 로 만들어서 return 하기 2. List 값은 object 로 만들어서 return 하기 3. 성공 실패 구분은 custom 필드가 아닌, 상태코드로 구분하게 하기 4. 에러 reponse 와 성공 reponse 는 포맷을 다르게 가져가자
 
  1. 그냥 냅다 return 하기
      • 컨트롤러에서 dto 를 return 값으로 정해서 바로 return 하는 방법
      장점 : 젤 편함
      단점 : 통일성이 저하 될 수 있고, 개인의 주관이 많이 들어갈 수도…
      @PostMapping("/signUp") public SignUpAPIResponse signUp( @RequestBody @Valid SignUpAPIRequest request) { SignUpResponse response = authService.signUp(SignUpRequest.from(request)); return SignUpAPIResponse.from(response); }
  1. ReponseEntity 로 한번 묶어서 return 하기
      • ResponseEntity 에 넣어서 보내주는 방식
      장점 : 통일성이 증가, 상태코드도 지정 가능, 세부적으로 http 응답을 조절 할 수 있음.
      단점 : 1번이랑 응답 포맷이 똑같은건데 굳이 귀찮게 한번 더 적는 이유를 몰겟다
@PostMapping("/signUp") public ResponseEntity<SignUpAPIResponse> signUp( @RequestBody @Valid SignUpAPIRequest request) { SignUpResponse response = authService.signUp(SignUpRequest.from(request)); return ResponseEntity.ok(SignUpAPIResponse.from(response)); }
 
  1. custom response 를 만들어서 해당 dto 로 다 변환해서 보내주기
    1. 장점 : 통일성 있어보이고 좋음. aop 적용으로 일괄 처리가능
      단점 : list 같은 경우는 타고 들어가는 뎁스가 더 많아지는데 이렇게 감싸는 이유가 뭘까… list 접근하려면 getBody → getData → getListData 이렇게 가야함
       
@GetMapping("/user/id/{userId}") public BasicResult<UserResponseDto> findUserById() { return BasicResult.from(userService.findById(userId)); } @Getter @Setter public class BasicResult<T> { private T data; }