2.5 KiB
2.5 KiB
보안 및 응답 규칙
예외/응답 규칙
- 공통 예외 응답은
GlobalExceptionHandler에서 처리하므로 Controller 별 개별 예외 처리를 중복해서 늘리지 않는다. @Valid, 바인딩 실패, JSON 파싱 실패, 타입 오류는CODE_4001로 통일하고 필드 오류가 있으면Map<String, String>형태로 반환한다.- 단순 성공/실패 문자열을 직접 내려주기보다
ApiResponse.entity(...)와ApiResponseCode조합을 우선 사용한다. - 404/405/500 같은 공통 HTTP 오류도 가능하면
ApiResponseCodeenum 으로 맞춘다.
보안 구조
- Swagger:
/v3/api-docs/**,/swagger-ui/**→ HTTP Basic 인증 (InMemory) - API: JWT Bearer 토큰 인증 (Stateless)
- 세션/쿠키: Redis Session 저장소 사용, 쿠키 속성은 프로파일별
cookie.*설정으로 제어 - 공개 경로:
/,/actuator/health,/sso/**,/auth/**,/user/signup,/files/tusHook - Swagger 인증과 API 인증은
SecurityFilterChain을 분리해서 관리한다.
응답 코드 규칙
- 응답 코드는
ApiResponseCodeenum 으로 관리한다.
| 코드 | 메시지 | HTTP Status | 용도 |
|---|---|---|---|
CODE_200 |
성공 | 200 OK | 일반 성공 |
CODE_400 |
잘못된 요청 | 400 Bad Request | 일반 클라이언트 오류 |
CODE_401 |
인증 필요 합니다. | 401 Unauthorized | 인증 없음 |
CODE_403 |
접근 권한 필요 합니다. | 403 Forbidden | 권한 없음 |
CODE_404 |
페이지를 찾을 수 없습니다. | 404 Not Found | 리소스 없음 |
CODE_405 |
잘못된 요청입니다. 요청 방식을 확인해 주세요. | 405 Method Not Allowed | 메서드 불일치 |
CODE_500 |
요청을 처리하는 중 오류가 발생했습니다. | 500 Internal Server Error | 서버 오류 |
CODE_2001 |
{0} 정보 조회에 성공하였습니다. | 200 OK | 단건 조회 성공 |
CODE_2002 |
{0} 등록 되었습니다. | 201 Created | 등록 성공 |
CODE_2003 |
조회된 정보가 없습니다. | 200 OK | 조회 결과 없음 |
CODE_2004 |
중복된 {0} 정보 입니다. | 409 Conflict | 중복 데이터 |
CODE_4001 |
입력값을 확인해주세요. | 400 Bad Request | @Valid / 바인딩 / 타입오류 / JSON 파싱 실패 |
CODE_4003 |
필수 요청 파라미터가 누락되었습니다. | 400 Bad Request | 필수 파라미터 누락 |
{0}자리에 대상명 삽입 (예:CODE_2001→ "회원 정보 조회에 성공하였습니다.")