REST pattern

REST 상태 코드는 리소스 변화와 처리 시점을 함께 표현한다

CRUD에 상태 코드를 기계적으로 붙이지 말고, 리소스가 새로 생겼는지, 본문이 필요한지, 처리가 끝났는지까지 같이 본다.

ReadGET /items/1200 OK

표현 본문을 함께 돌려준다. 없으면 404 또는 상황에 따라 410.

CreatePOST /items201 Created

새 URI가 있으면 Location 헤더로 알려준다.

AsyncPOST /jobs202 Accepted

접수됐지만 처리는 아직 끝나지 않았다.

ConflictPUT /items/1409 / 412

현재 리소스 상태나 조건부 요청이 맞지 않는다.

상황권장 표현잘못 고르면 생기는 문제
생성이 완료됨201 Created + Location클라이언트가 새 리소스 위치를 모른다.
본문이 없음204 No Content빈 본문을 성공 데이터로 오해할 수 있다.
비동기 처리202 Accepted + 상태 조회 URI처리가 끝난 것으로 착각한다.
검증 실패400 / 422클라이언트가 재시도할지 수정할지 헷갈린다.

계약: 상태 코드는 API 문서의 일부다. 같은 실패를 항상 같은 코드와 본문 형식으로 돌려줘야 클라이언트가 안정적으로 동작한다.