HTTP Method의 종류
- GET
- POST
- PUT
- HEAD
- DELETE
- PATCH
- OPTIONS
- CONNECT
- TRACE
GET과 POST가 가장 많이 쓰인다.
1. GET
- 서버에 데이터를 요청하는 데 사용된다.
- 쿼리 스트링(이름, 값의 쌍)은 URL로 전송된다.
/test/demo_form.php?name1=value1&name2=value2
GET의 특징
- 캐싱 가능
- 정적 컨텐츠는 요청하고 나면 브라우저에서 요청을 캐시해두고, 동일한 요청이 발생할 때 캐시된 데이터를 사용한다.
- 북마크가 가능
- 보안에 취약
- 길이 제한(255자)가 있다.
2. POST
- 서버에 데이터를 송신해 리소스를 작성 혹은 갱신하기 위해 사용된다.
- 서버에 송신되는 데이터는 HTTP request의 request body에 저장된다.
POST /test/demo_form.php HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
POST 특징
- 캐싱되지 않는다.
- 북마크할 수 없다.
- 데이터 길이에 제한이 없다.
3. GET과 POST의 비교
| GET | POST |
---|
캐싱 가능 여부 | O | X |
요청 결과 | 동일(Idempotent) | 변동가능(Non-idempotent) |
브라우저 | 파라미터가 브라우저 히스토리에 남는다. | 파라미터가 브라우저 히스토리에 남지 않는다. |
데이터 길이 제한 | URL의 길이가 최대 2048자로 제한 | 제한없음 |
데이터 타입 제한 | ASCII 문자만 가능 | 제한없음 |
보안 | URL에 데이터가 보내져 보안이 취약 | 데이터가 브라우저 히스토리나 서버 로그에 남지 않아 보안이 보다 안전 |
4. PUT
- 리소스를 생성/업데이트하기 위해 서버로 데이터를 전송
- POST, PUT의 차이점은 PUT요구가 무의미함
- 같은 PUT 요구를 여러 번 호출하면 항상 같은 결과
- POST 요구를 반복적으로 호출하면 동일한 리소스가 여러 번 생성
5. HEAD
- GET과 거의 동일하지만 request body가 없음
- GET/users가 사용자 목록을 반환할 경우 HEAD/users는 동일한 요청을 하지만 사용자 목록을 반환하지 않음
- HEAD는 GET 요청 전 GET 요청이 반환되는 내용을 확인하는 데 유용
6. DELETE
7. PATCH
8. OPTIONS
9. CONNECT
- 요청된 리소스와 쌍방향 통신을 시작하기 위해 사용
10. TRACE
- 타깃리소스의 경로를 테스트하는 message loop-back 테스트를 실행하기 위해 사용 (디버깅에 도움)