HTTP 요청 방식 (Method)
HTTP는 클라이언트가 서버에 무엇을 요청하는지를 표현하기 위해 다양한 요청 메서드를 제공한다.
가장 많이 사용되는 메서드는 GET, POST, PUT, DELETE 등이다.
2-1. 주요 HTTP 요청 방식 요약
| GET |
데이터 조회 (읽기) |
게시글 목록 조회, 검색 |
| POST |
데이터 생성 |
회원가입, 로그인 |
| PUT |
데이터 전체 수정 |
게시글 전체 내용 변경 |
| PATCH |
데이터 일부 수정 |
게시글 제목만 수정 |
| DELETE |
데이터 삭제 |
게시글 삭제 |
| OPTIONS |
지원하는 메서드 확인 |
사전 요청 처리 (CORS 등) |
| HEAD |
응답 헤더만 요청 |
리소스 존재 여부 확인용 |
2-2. GET 방식
- 데이터를 URL 뒤에 붙여서 전송 (쿼리스트링 방식)
- 주소창에 노출됨 → 보안에 취약
- 캐싱 가능 / 즐겨찾기 가능
- 주로 데이터 조회 용도
ex) GET /search?query=apple HTTP/1.1
2-3. POST 방식
- 데이터를 바디에 담아 전송
- 주소창에 보이지 않음 → 보안 상대적으로 우수
- 대용량 데이터 전송 가능
- 서버가 아직 실별하지 않은 새 리소스 생성
- 회원가입, 로그인, 결제 등 주로 사용
ex) POST /register HTTP/1.1 Content-Type: application/x-www-form-urlencoded username=kim&password=1234
2-4. PUT 방식
- 리소스 전체를 수정하거나 새로 생성할 때 사용 (파일을 덮어씌우기 처럼 수정 한다!!)
- 리소스가 있으면 대체
- 리소스가 없으면 생성
- 같은 데이터를 여러 번 전송해도 동일한 결과 (멱등성)
- 보통 특정 id에 해당하는 데이터를 전부 갱신
- 클라이언트가 리소스를 식별
ex) PUT /users/1 HTTP/1.1 Content-Type: application/json { "name": "Kim", "email": "kim@example.com" }
2-6. PATCH 방식
- 리소스의 일부만 수정할 때 사용
- 전체 데이터가 아닌 변경할 항목만 전송
- PUT보다 효율적
ex) PATCH /users/1 HTTP/1.1 Content-Type: application/json { "email": "new@example.com" }
일부만 변경~
2-6. DELETE 방식
- 지정된 리소스를 삭제할 때 사용
- 요청 시 바디 없이 URI로 리소스를 식별
ex) DELETE /users/1 HTTP/1.1
2-7. OPTIONS 방식
- 특정 리소스가 지원하는 HTTP 메서드를 조회
- 브라우저가 CORS 사전 요청(Preflight) 시 사용
- 실제로 데이터를 처리하진 않음
2-8. HEAD 방식
- 응답 헤더만 받고, 바디는 받지 않음
- 리소스의 존재 여부 확인, 상태 확인용으로 사용
- GET과 비슷하되, 본문을 제외
참고: 멱등성(Idempotent)이란?
같은 요청을 여러 번 보내더라도 결과가 동일한 것!!! 1000번을 쏴도 똑같아야 한다!!