WEB 개발을 기준으로 보통 CRUD라는 용어를 사용하는데 REST API 와 CRUD를 기준으로 설명해 봅시다.
CRUD 작업은 Create, Read, Update, Delete의 약자로, 웹 개발에서 데이터를 관리하는 기본적인 작업입니다. 각 작업에 따라 사용하는 표준 HttpStatus는 다음과 같습니다.
1. Create (생성)
- 성공:
- 201 Created: 리소스가 성공적으로 생성되었음을 나타냅니다.
- 202 Accepted: 요청은 처리되었지만 아직 완료되지 않았음을 나타냅니다. (비동기 작업)
- 실패:
- 400 Bad Request: 요청에 오류가 있음을 나타냅니다.
- 401 Unauthorized: 사용자가 인증되지 않았음을 나타냅니다.
- 403 Forbidden: 사용자에게 권한이 없음을 나타냅니다.
- 409 Conflict: 리소스가 이미 존재하는 경우 나타냅니다.
2. Read (조회)
- 성공:
- 200 OK: 요청이 성공적으로 처리되었음을 나타냅니다.
- 204 No Content: 리소스가 존재하지만 내용이 없는 경우 나타냅니다.
- 실패:
- 400 Bad Request: 요청에 오류가 있음을 나타냅니다.
- 401 Unauthorized: 사용자가 인증되지 않았음을 나타냅니다.
- 403 Forbidden: 사용자에게 권한이 없음을 나타냅니다.
- 404 Not Found: 리소스가 존재하지 않는 경우 나타냅니다.
3. Update (수정)
- 성공:
- 200 OK: 리소스가 성공적으로 업데이트되었음을 나타냅니다.
- 204 No Content: 리소스가 업데이트되었지만 내용이 없는 경우 나타냅니다.
- 실패:
- 400 Bad Request: 요청에 오류가 있음을 나타냅니다.
- 401 Unauthorized: 사용자가 인증되지 않았음을 나타냅니다.
- 403 Forbidden: 사용자에게 권한이 없음을 나타냅니다.
- 404 Not Found: 리소스가 존재하지 않는 경우 나타냅니다.
4. Delete (삭제)
- 성공:
- 200 OK: 리소스가 성공적으로 삭제되었음을 나타냅니다.
- 204 No Content: 리소스가 삭제되었지만 내용이 없는 경우 나타냅니다.
- 실패:
- 400 Bad Request: 요청에 오류가 있음을 나타냅니다.
- 401 Unauthorized: 사용자가 인증되지 않았음을 나타냅니다.
- 403 Forbidden: 사용자에게 권한이 없음을 나타냅니다.
- 404 Not Found: 리소스가 존재하지 않는 경우 나타냅니다.
예시:
GET /users/{id}
- 사용자 존재:
- 200 OK: 사용자 정보를 JSON 형식으로 반환합니다.
- 사용자 없음:
- 404 Not Found: "사용자가 존재하지 않습니다."라는 메시지를 반환합니다.
POST /users
- 사용자 생성 성공:
- 201 Created: 생성된 사용자의 URI를 Location 헤더에 포함하여 반환합니다.
- 사용자 생성 실패:
- 400 Bad Request: "유효하지 않은 요청입니다."라는 메시지를 반환합니다.
위의 예시는 일반적인 표준이며, 상황에 따라 다른 HttpStatus를 사용할 수 있습니다.
참고 자료:
- HTTP Status Codes: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
- REST API Best Practices: https://restfulapi.net/
※ 리소스 = 서버로 부터 생성된 자원(?) 정도로 생각하면 web서버에서 왜 그런 코드로 응답을 했었던 건지 이해가 쉬운것 같습니다.