HTTP 메소드와 상태 코드는 API 설계의 기본 요소이며,
명확한 자원 표현과 구조적 응답은 효율적이고 안정적인 통신을 보장한다.
HTTP 메소드는 웹 자원을 관리하고 조작하기 위해 사용하는 행동 지침이다.
GET, POST, PUT, DELETE 등의 메소드는 자원과 상호작용하는 명확한 규칙을 제공한다.
이를 통해 클라이언트와 서버는 서로 일관되고 효율적으로 소통할 수 있다.

| HTTP 메소드 | 역할 | 특징 |
|---|---|---|
| GET | 자원을 읽어오는 요청 | 데이터 변경이 없는 안전한 요청이다. 자원 목록을 주로 가져오며, 응답 데이터는 JSON 등으로 제공된다. |
| POST | 새로운 자원을 생성 | 데이터베이스에 새로운 항목을 추가한다. 요청 성공 시 새 자원의 JSON 표현을 응답으로 반환한다. |
| PUT | 기존 자원의 전체를 수정 | 수정된 자원의 전체 데이터를 제공한다. |
| PATCH | 기존 자원의 일부를 수정 | 자원의 일부만 수정할 때 사용한다. |
| DELETE | 자원을 삭제 | 서버에서 특정 자원을 제거한다. |
GET /members HTTP/1.1
Host: api.example.com
{
"members": [
{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" }
]
}
| 메소드 | 주요 용도 | 특징 |
|---|---|---|
| POST | 자원 생성 | 새로운 자원 생성 |
| PUT | 자원 교체 | 전체 자원 교체 (미포함 필드는 null) |
| PATCH | 부분 수정 | 전달된 필드만 수정 (나머지 유지) |
| 구분 | POST | PUT | PATCH |
|---|---|---|---|
| 용도 | 생성 | 전체 교체 | 부분 수정 |
| 기존 필드 처리 | - | 삭제 | 유지 |
| 멱등성 | X | O | X |
cf. 멱등성이란?
멱등성이란 동일한 연산을 여러 번 수행해도 결과가 달라지지 않는 성질을 말한다.
네트워크 지연, 중복 요청 등의 문제를 해결하는 데 도움을 주기 때문에 중요함.
{
"username": "harry",
"age": 30
}
PUT /members/1
Content-Type: application/json
{
"username": "mike"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"username": "mike",
"age": null
}
PATCH /members/1
Content-Type: application/json
{
"username": "mike"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"username": "mike",
"age": 30
}
| 구분 | POST | PUT | PATCH |
|---|---|---|---|
| 주요 용도 | 자원 생성 | 자원 교체 | 자원 부분 수정 |
| 기존 필드 처리 | - | 삭제 (null) | 유지 |
| 멱등성 | X | O | X |
| 응답 코드 | 201 Created | 200 OK | 200 OK |
💡 참고사항
- 기술적으로는 세 메소드 모두 생성/수정 가능
- REST 원칙상 용도에 맞는 사용 권장
- API 설계 시 상황에 따라 선택적 구현 가능
HTTP 상태 코드는 요청의 성공 여부와 서버의 상태를 클라이언트에 전달하는 데 사용된다.
| 범위 | 설명 | 예시 |
|---|---|---|
| 1xx | 정보 전달 | 100 Continue - 요청 진행 가능 |
| 2xx | 성공 | 200 OK - 요청 성공 |
| 3xx | 리다이렉션 | 301 Moved Permanently - 리소스 이동 |
| 4xx | 클라이언트 오류 | 404 Not Found - 자원 없음 |
| 5xx | 서버 오류 | 500 Internal Server Error - 서버 문제 |
200 OK는 요청이 성공적으로 처리되었음을 의미한다. 404 Not Found는 요청한 자원이 서버에 없음을 의미한다.클라이언트와 서버는 HTTP 요청과 응답을 통해 자원을 주고받으며 통신한다.
URI를 통한 자원 식별
/api/v1/members/1JSON 기반의 응답 데이터
{
"id": 1,
"name": "Alice"
}상태 코드와 응답 데이터의 조화
201 Created와 함께 새 자원의 URI 반환. 204 No Content는 DELETE 요청 성공을 의미한다. 명확하고 간결한 URI
/members/1는 특정 멤버에 대한 정보를 나타낸다.일관된 JSON 응답 구조
{ "status": "success", "data": ... } 형식을 따른다.적절한 상태 코드 사용
200 OK. 404 Not Found.