Skip to content

Rest API Message Protocol

hyoguoo edited this page Mar 31, 2024 · 2 revisions

아래의 내용은 Rest API 통신의 전반적인 규칙을 정의하며, 자세한 요청 및 응답에 대한 내용은 Swagger를 통해 정의한다.


Request

전반적으로 아래의 규칙을 따르며, 필요에 따라 팀원과 상의하여 정의한다.

  • URI: Resource
    • 명사 사용
    • 복수형 사용
    • 하이픈(-) 사용
  • Method: HTTP Method
    • GET: 조회
    • PUT: 수정
    • DELETE: 삭제
    • POST: 그 외
  • Parameter
    • Query String
      • key=value 형태로 작성
      • &로 구분
      • CammelCase로 작성
    • Request Body
      • JSON 형태로 작성
      • CammelCase로 작성

Success Response

성공 응답은 success 필드가 true로 설정되며, response 필드에 응답 데이터를 포함한다.(응답 데이터가 없는 경우 생략 가능)

{
  "success": true,
  "response": {
    "status": "UP"
  }
}

Error Response

에러 응답은 success 필드가 false로 설정되며, error 필드에 에러 코드와 메시지를 포함한다.

{
  "success": false,
  "error": {
    "errorCode": "E00202",
    "message": "비밀번호가 일치하지 않습니다."
  }
}

Custom Error Code

에러 응답 메시지에 HTTP Status Code 외에 구체적인 Custom Error Code를 포함하여 클라이언트에게 에러 상황을 전달한다.

  • 도메인
number domain
0 Auth
1 Member
2 Solve
3 Room
4 Problem
5 RoomMember
6 AWS S3
7 Compile
  • 에러 종류
number situation
0 요청 메시지 형식 오류
1 도메인 로직 상의 오류
2 인증, 인가 오류
3 존재하지 않는 리소스에 접근한 경우
4 외부 API 연동 중 오류

예를 들어, 비밀번호가 일치 않는 경우의 Custom Error Code는 E00202로 정의되며, 다음과 같은 의미를 가진다.

E00202
| || |
| || └── 순번(01, 02, 03, ...)
| |└── 에러 종류
| └── 도메인
└── Prefix

필요에 따라 errormessage는 상세한 에러 메시지를 포함하지 않을 수 있다.(구체적인 에러 메시지 은닉 필요 시)

{
  "success": false,
  "error": {
    "errorCode": "E00202"
  }
}