웹 개발에서 클라이언트와 서버 간의 데이터 통신을 위해 HTTP 요청 메서드를 사용한다. 대표적으로 GET, POST, PUT, PATCH, DELETE가 있으며, 각각의 목적과 차이점을 이해하는 것이 중요하다.
✅ 데이터를 요청하고 조회할 때 사용
✅ URL의 쿼리 스트링에 데이터를 포함하여 전송
✅ 캐싱 가능, 브라우저에서 뒤로 가기 및 북마크 가능
GET /api/posts?category=tech&page=2 HTTP/1.1
Host: example.com
fetch("https://example.com/api/posts?category=tech&page=2")
.then((response) => response.json())
.then((data) => console.log(data));
💡 활용 예시
/api/posts)/api/user/123)/search?q=Next.js)✅ 서버에 데이터를 생성할 때 사용
✅ 데이터를 요청의 body에 포함하여 전송 (URL에 노출되지 않음)
✅ 캐싱 불가능, 요청마다 새로운 데이터가 생성될 수 있음
POST /api/posts HTTP/1.1
Host: example.com
Content-Type: application/json
{
"title": "Next.js 13 Features",
"content": "App Router, Server Actions..."
}
fetch("https://example.com/api/posts", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "Next.js 13 Features",
content: "App Router, Server Actions...",
}),
});
💡 활용 예시
/api/register)/api/login)/api/comments)✅ 리소스를 "전체 업데이트"할 때 사용
✅ ID를 명시하고 해당 리소스를 덮어씌움
✅ 요청할 때마다 동일한 데이터를 저장 (멱등성 보장)
PUT /api/posts/123 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"title": "Updated Title",
"content": "Updated Content"
}
fetch("https://example.com/api/posts/123", {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "Updated Title",
content: "Updated Content",
}),
});
PATCH 사용)💡 활용 예시
/api/users/123)/api/posts/456)✅ 리소스를 "부분 업데이트"할 때 사용
✅ ID를 명시하고 변경할 필드만 포함하여 전송
✅ PUT과 다르게 전체를 덮어씌우지 않고, 변경된 부분만 적용
PATCH /api/posts/123 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"title": "Updated Title"
}
fetch("https://example.com/api/posts/123", {
method: "PATCH",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "Updated Title",
}),
});
💡 활용 예시
/api/users/123/email)/api/posts/123)✅ 리소스를 삭제할 때 사용
✅ 멱등성을 보장하지만, 한 번 삭제된 데이터는 되돌릴 수 없음
DELETE /api/posts/123 HTTP/1.1
Host: example.com
fetch("https://example.com/api/posts/123", {
method: "DELETE",
});
💡 활용 예시
/api/posts/123)/api/users/456)| 메서드 | 목적 | 요청 데이터 | 응답 데이터 | 캐싱 가능 여부 | 멱등성 |
|---|---|---|---|---|---|
| GET | 데이터 조회 | URL에 포함 | JSON, HTML | ✅ 가능 | ✅ 가능 |
| POST | 데이터 생성 | 요청 body | JSON, HTML | ❌ 불가능 | ❌ 불가능 |
| PUT | 데이터 전체 수정 | 요청 body | JSON, HTML | ❌ 불가능 | ✅ 가능 |
| PATCH | 데이터 부분 수정 | 요청 body | JSON, HTML | ❌ 불가능 | ❌ (보장 X) |
| DELETE | 데이터 삭제 | URL에 포함 | (보통 없음) | ❌ 불가능 | ✅ 가능 |
🔹 GET: 데이터를 조회할 때 사용 (ex: 게시글 목록 불러오기)
🔹 POST: 새로운 데이터를 생성할 때 사용 (ex: 회원가입, 댓글 작성)
🔹 PUT: 기존 데이터를 전체 변경할 때 사용 (ex: 프로필 정보 변경)
🔹 PATCH: 기존 데이터를 일부 변경할 때 사용 (ex: 닉네임 변경)
🔹 DELETE: 데이터를 삭제할 때 사용 (ex: 회원 탈퇴)