GET
- 데이터가 HTTP Request header 부분에 url이 담겨 전송된다
- 전송할 수 있는 데이터 크기가 제한적
- 데이터가 url에 노출되기 때문에 보안이 필요한 데이터에 대해서는 GET을 쓰면 안됨
- 데이터를 가져오는 용도로 사용, 서버의 값이나 상태를 변경시키지 않음
- GET의 경우 캐싱을 사용하기 때문에 더 빠를 수 있지만, 업데이트의 적용이 느리게 될 수도 있다.
POST
- 데이터가 HTTP Request의 body 부분에 담겨서 전송됨
- 데이터 크기가 GET보다 크고 보안면에서 낫다
- 서버의 값이나 상태를 변경하기 위해서 사용된다
- GET, POST 차이점
- 사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
- 요청에 body 유무 : GET 은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다. POST 는 body 에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재한다.
- 멱등성 (idempotent) : GET 요청은 멱등이며, POST는 멱등이 아니다.
- 멱등 : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
DB로 따지면 GET은 SELECT 에 가깝고, POST는 Create 에 가깝다고 보면 된다.
PUT
- 리소스의 모든 것을 업데이트 한다.
PUT /members/1
{
name : "김길순"
}
회원 (member) | 1 |
이름 (name) | 김길순 |
나이 (age) | |
성별 (gender) |
보내지지 않은 값에 대해서는 null 값으로 변한다.
PATCH
- 리소스의 일부를 업데이트 한다
PATCH /members/1
{
name : "김길순"
}
회원 (member) | 1 |
이름 (name) | 김길순 |
나이 (age) | 10(기존 데이터) |
성별 (gender) | M(기존 데이터) |
DELETE
- 서버의 데이터를 삭제한다
- Body, Content-type이 비워져 있다.
DELETE /members/1
OPTION
- 서버와 브라우저가 통신하기 위한 통신 옵션을 확인하기 위해 사용된다.
- 서버가 어떤 Method, Header, Content-type을 지원하는지 확인할 수 있다.
- Preflight Request
- 클라이언트에서 요청하려는 URL이 외부 도메인을 경우, 웹 브라우저에서 자체적으로 OPTION이 실행됨(실질적인 요청 전 확인용)
- Cors도 Preflight Request를 사용하여, OPTIONS 요청을 보낸 뒤, 해당 정보를 토대로 통신의 가능 여부를 파악한다.
Share article