{
"title": "Unauthorized",
"status": 401,
"detail": "토큰이 만료되었습니다.",
"instance": "/plans/123",
"code": "EXPIRED_TOKEN"
}
위와 같은 에러 구조에서 code로 구분할 수 있습니다.
게스트 관련 로직은 ShareLink를 참고해 주세요.MISSING_TOKEN: 토큰이 존재하지 않으면 발생합니다.
EXPIRED_TOKEN: 만료된 토큰입니다. /reissue를 호출해주시면 됩니다.
만약 /reissue에서도 에러가 발생한다면 만료된 리프레시 토큰이라는 뜻이라서 로그아웃 상태가 된다고 보시면 됩니다. (토큰 재발급 시 리프레시 토큰을 갱신하는 RTR 방식입니다.)
INVALID_TOKEN: 토큰이 유효하지 않으면 발생합니다.
GUEST_FORBIDDEN: 게스트가 접근할 수 없는 API에서 발생합니다. (각 명세서에 사용 가능 여부가 명시되어 있습니다.)
로그인을 유도하는 팝업이 뜨거나 로그인 화면으로 이동하는 경우일 것 같습니다.
FORBIDDEN: 사용자 권한이 부족할 때 발생합니다.
(FORBIDDEN_NOT_GUEST, FORBIDDEN_NOT_MEMBER 처럼 FORBIDDEN_ 으로 시작하는 코드가 발생합니다. 각 명세에 추가되어 있습니다.)
TERMS_REQUIRED: 약관 동의 화면으로 이동해주시면 됩니다.
{
"title": "Bad Request",
"status": 400,
"detail": "유효성 검사에 실패했습니다.",
"instance": "/projects/123",
"errors": [
{
"field": "age",
"value": 5,
"code": "Min",
"reason": "20 이상이어야 합니다"
},
{
"field": "name",
"code": "NotBlank",
"reason": "이름은 필수입니다."
},
{
"field": "tags",
"code": "NotEmpty",
"reason": "비어 있을 수 없습니다"
}
]
}
제약 조건 에러인 경우 errors에 어떤 조건이 실패했는지 배열로 있습니다.
요청한 값이 null이 아니라면 value에 어떤 값이였는지 반환됩니다.
code는 어떤 제약 조건에서 실패했는지를 나타냅니다.
| 코드 | |
|---|
| NotBlank | |
| NotEmpty | |
| NotNull | |
| Size | |
| Min | |
| Max | |
| Size | |
| Range | |
| URL | |
| TitlePolicy | 한글, 영문, 숫자, 특수문자(' _), 이모지 |
| NicknamePolicy | 2~10자, 한글/영문/숫자만 가능 (공백/특수문자 불가) |
| MemoPolicy | 한글, 영문, 숫자, 이모지, 특수문자(!@#$%^&*()-_+=[]{} ,.?/) 및 줄바꿈 |
Modified at 2026-03-02 17:47:32