HTTP Method는 크게 4가지로 나누어져있다.
- Create: 데이터 생성 (POST)
- Read: 데이터 조회 (GET)
- Update: 데이터 수정 (PUT)
- Delete: 데이터 삭제 (DELETE)
보통 GET
과 POST
의 차이는 명확히 구분할 수 있지만, POST
와 PUT
를 구분하려면 멱등성을 알아야 한다.
멱등성
이란 여러번 수행해도 결과가 같음을 의미한다.
HTTP 메소드를 예를 들자면, GET, PUT, DELETE는 같은 경로로 여러 번 호출해도 결과가 같다.
그러나 POST는 매 호출마다 새로운 데이터가 추가된다.
따라서, POST 연산은 결과가 Idempotent하지 않지만, PUT은 반복 수행해도 그 결과가 Idempotent 하다.
GET
메소드는 주로 데이터를 읽거나
(Read) 검색
(Retrieve)할 때에 사용되는 메소드이다.
만약에 GET
요청이 성공적으로 이루어진다면 200
(OK) HTTP 응답 코드를 리턴한다. 에러가 발생하면 상태코드 404
(Not found) 또는 400
(Bad request)를 반환한다.
HTTP 명세에 의하면 GET 요청은 오로지 데이터를 읽을 때만 사용된다고 한다. 따라서 데이터를 변경할 때는 사용하면 안된다.
Ex)
GET /post/3
데이터를 조회하는 것이기 때문에 요청시에 Body
값과 Content-Type
이 비워져있다. 조회할 데이터에 대한 정보는 URL을 통해서 파라미터를 받고 있는 모습을 볼 수 있다.
데이터 조회에 성공한다면 Body 값에 데이터 값을 저장하여 성공 응답을 보낸다.
GET
은 캐싱
이 가능하여 같은 데이터를 한번 더 조회할 경우에 조회 속도가 빨라진다.
POST
메소드는 주로 새로운 리소스를 생성
(create)할 때 사용된다. 성공적으로 작업을 완료하면 201
(Created) HTTP 응답을 반환한다.
POST 메소드는 아래와 같은 특징을 가지고있다.
Ex)
POST /user body: { email: "example@gmail.com", password: "test123!@" } Content-Type: "application/json"
데이터를 생성하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다.
URL을 통해서 데이터를 받지 않고, Body
값을 통해서 받는다.
데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.
PUT
은 리소스를 생성/수정
하기 위해 서버로 데이터를 보내는 데 사용된다.
PUT은 아래와 같은 특징을 가지고있다.
Ex)
PUT /user/1 body: { email: "updateEmail@gmail.com", password: "updatePassword123!@" } Content-Type: "application/json"
데이터를 수정하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다.
URL을 통해서 어떠한 데이터를 수정할지 파라미터 받는다. 그리고 수정할 데이터 값을 Body 값을 통해서 받는다.
DELETE
메서드는 지정된 리소스를 삭제한다.
Ex)
DELETE /user/1
데이터를 삭제하는 것이기 때문에 요청시에 Body 값과 Content-Type 값이 비워져있다.