Knowledge/이론
HTTP GET / POST /PUT 차이
똑똑한망치
2024. 2. 20. 19:42
728x90
반응형
1. HTTP GET
GET은 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드이다.
일반적으로 서버에서 정보를 조회할 때 사용한다.
HTTP GET 방식은 요청에 필요한 데이터를 URL 에 붙여서 전송한다. 이를 쿼리 스트링(query String)이라고 부른다.
방식은 URL 끝에 "?" 을 붙이고 그 뒤에 "변수명1=값1&변수명2=값2" 형식으로 이어 붙인다.
(1) GET 의 특징
- GET 요청은 캐시가 가능하다.
- GET 요청은 브라우저 히스토리에 남는다.
- GET 요청은 북마크가 될 수 있다.
- GET 요청은 길이 제한이 있다.
- 표준은 없으나 브라우저마다 제한이 다르다.
- GET 요청은 중요한 정보를 다루면 안된다.
- URL에 데이터를 붙여 전송하기 때문에 모두 노출된다.
- GET 은 데이터를 요청할때만 사용된다.
2. HTTP POST
POST는 서버에 정보를 입력하거나 추가할 때 사용한다.
POST는 전송할 데이터를 HTTP request의 body부분에 담아 전송한다. body 타입은 Content-Type 헤더에 따라 결정된다.
POST로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용한다.
(1) POST 의 특징
- POST Request 는 Idempotent(멱등) 하지 않다.
- POST로 동일한 entity의 Request를 N번 보낸다면 N개의 다른 Resource 들이 생성되는 것이다.
3. HTTP GET 과 POST의 차이점
- 사용 목적
- GET은 서버에서 정보를 조회할 때 사용하고, POST는 서버에 정보를 입력하거나 추가할 때 사용한다.
- 요청에 body 유무
- GET 은 URL파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP메시지에 body가 없다.
- POST는 body에 데이터를 담아 보내기 때문에 HTTP body 가 존재한다.
- 멱등성(idempotent)
- GET 은 멱등이며, POST 는 멱등이 아니다.
- GET 은 여러 번 요청해도 응답이 동일하다.
- POST는 N개의 생성 요청에 N개의 resource 가 생성된다. 따라서 멱등이 아니다.
※ 멱등이란
연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
4. HTTP PUT
POST는 서버에 정보를 입력(생성)하거나 업데이트(갱신)할 때 사용한다.
Resource가 존재한다면, 데이터를 Update(갱신)한다.
Resource가 존재하지 않는다면, 데이터를 Create(생성) 한다.
(1) PUT의 특징
- Resource Identifier
- 예를 들어) /shoes/{shoe_id} 처럼 해당 resource의 Resource Identifier를 나타내줘야 한다.
- PUT Request는 Idempotent(멱등) 하다.
- PUT request로는 새로운 정보가 계속되서 생성되지 않는다. 여러번 재시도를 하더라도, 업데이트를 하지 생성되지 않아 동일한 결과값을 받는다. 즉 , 멱등하다.
5. HTTP POST과 PUT의 차이점
POST의 경우 요청 URI에 /Collection URI 까지만 포함이 되지만,
PUT의 경우 Collection URI/{Resource Identifier}가 포함되어야 한다.
요청 값의 결과로 POST는 멱등하지 않은 , 각 요청마다 새로운 결과값을 제공하지만,
PUT의 경우 멱등한 같은 결과 값을 제공한다.
반응형