📌 REST API 설계 가이드
info
REST API는 리소스를 명확히 표현하고, HTTP Method를 적절히 사용하는 것이 핵심이다.
이 문서는 일관된 API 설계를 위한 명명 규칙, URI 구성, 응답 구조 등을 가이드한다.
✅ URI 설계 원칙
🔹 리소스 중심
- 명사는 복수형으로 작성 (
/users
, /orders
)
- 하위 리소스는 경로로 표현 (
/users/{userId}/orders
)
- 동사는 HTTP Method로 표현 (예:
POST /users
)
🔹 일관된 스타일
항목 |
예시 |
전체 조회 |
GET /items |
단일 조회 |
GET /items/{id} |
생성 |
POST /items |
수정 (전체) |
PUT /items/{id} |
수정 (일부) |
PATCH /items/{id} |
삭제 |
DELETE /items/{id} |
✅ URI 작성 규칙
규칙 |
예시 |
소문자 사용 |
/users , /accounts |
하이픈(-)으로 단어 구분 |
/user-profile |
확장자 사용 금지 |
/users.json ❌ |
쿼리스트링은 필터용 |
/users?age=30 |
✅ 응답 포맷 가이드
{
"status": 200,
"message": "성공",
"data": {
"userId": 1,
"username": "얄리"
}
}
필드 |
설명 |
status |
HTTP 상태코드와 동일 |
message |
간단한 결과 메시지 |
data |
응답 데이터 본문 |
✅ 상태 코드 표준
상태코드 |
의미 |
200 OK |
성공 |
201 Created |
생성 성공 |
204 No Content |
삭제 성공, 본문 없음 |
400 Bad Request |
잘못된 요청 |
401 Unauthorized |
인증 실패 |
403 Forbidden |
권한 없음 |
404 Not Found |
리소스 없음 |
409 Conflict |
중복 리소스 등 충돌 |
500 Internal Server Error |
서버 에러 |
✅ 에러 응답 구조 예시
{
"status": 400,
"message": "잘못된 요청입니다",
"error": {
"field": "email",
"reason": "이메일 형식이 잘못되었습니다"
}
}
✅ 버전 관리
- URL 버전 권장:
/api/v1/users
- Header 버전 대안:
Accept: application/vnd.myapp.v1+json
✅ 인증 및 권한 처리
방식 |
설명 |
JWT |
토큰 기반 인증 방식, 클라이언트 저장 |
OAuth2 |
외부 인증 시스템과 연계 |
Session |
서버 저장 방식 (Spring Security 등 활용) |
연결문서
댓글남기기