CRUD 계약은 status와 header까지 포함한다
repository 동작만 맞아도 HTTP 계약이 틀릴 수 있으므로 경계 신호를 표로 고정한다.
| 요청 | 성공 | 대표 실패 |
|---|---|---|
| POST /posts | 201 + Location | 400·409 |
| GET /posts/{id} | 200 + ETag | 404 |
| PUT /posts/{id} | 200 + 새 ETag | 404·412 |
| DELETE /posts/{id} | 204 | 404 |
repository 동작만 맞아도 HTTP 계약이 틀릴 수 있으므로 경계 신호를 표로 고정한다.
| 요청 | 성공 | 대표 실패 |
|---|---|---|
| POST /posts | 201 + Location | 400·409 |
| GET /posts/{id} | 200 + ETag | 404 |
| PUT /posts/{id} | 200 + 새 ETag | 404·412 |
| DELETE /posts/{id} | 204 | 404 |