HTTP 메소드
GET
GET 메소드는 주로 데이터를 읽거나 검색할 때 사용되는 메소드이다.
GET 요청이 성공적으로 이뤄지면, XML이나 JSON과 함께 200(OK) HTTP 응답 코드를 리턴한다.
에러가 발생하면 주로 404(Not found) 에러나 400(Bad request) 에러가 발생한다.
- HTTP 명세에 의하면 GET 요청은 오로지 데이터를 읽을 때만 사용되고, 수정할 땐 사용되지 않는다.
- 같은 요청을 여러 번 하더라도, 변함없이 항상 같은 응답을 받을 수 있다.
- 데이터를 변경하는 연산에 사용하면 안된다.
예)
GET /user/1
=> 데이터를 조회하는 것이기 때문에 요청 시 Body값과 Content-type이 비워져있다.
조회할 데이터에 대한 정보는 URL을 통해 파라미터를 받고 있다.
데이터 조회에 성공하면,
Body값에 데이터 값을 저장해 성공 응답을 보낸다.
GET은 캐싱이 가능하므로 같은 데이터를 한 번 더 조회할 경우, 저장한 값을 사용해 조회 속도가 빨라진다.
* 캐싱이란?
동일한 사용자가 이전에 제출한 자원 데이터에 대한 요청의 응답시간을 개선할 수 있다.
캐싱은 각 사용자에 대해 고유하고, Cache-Control HTTP 헤더 특성에 의해 제어된다.
POST
POST 메소드는 주로 새로운 리소스를 새로 생성할 때 사용되는 메소드이다.
좀 더 구체적으로, POST는 부모 리소스의 하위 리소스를 생성하는데 사용된다..
성공적으로 creation을 완료하면 201(Created) HTTP 응답을 반환한다.
- 같은 POST 요청을 반복해서 했을 때 항상 같은 결과물이 나오는 것을 보장 X
- 두 개의 POST 요청을 보내면, 같은 정보를 담은 두 개의 다른 리소스를 반환할 가능성이 높다.
예)
POST /user
body : {date : "example"}
Content-Type : "application/json"
데이터를 생성하기 때문에 요청 시 Body값과 Content-Type 값을 작성해야 한다.
해당 예시는 JSON을 통해 작성된 예시이다.
URL을 통해 데이터를 받지 않고, Body값을 통해 받는다.
데이터 조회 성공 시, Body값에 저장한 데이터 값을 저장해 성공 응답을 보낸다.
PUT
PUT 메소드는 리소스를 생성 / 수정하기 위해 서버로 데이터를 보내는 데 사용된다.
- 동일한 PUT 요청을 여러 번 호출하면 항상 동일한 결과가 생성된다.
예)
PUT /user/1
body : {date : "update example"}
Content-Type : "application/json"
데이터를 생성하기 때문에 요청 시 Body값과 Content-Type 값을 작성해야 한다.
해당 예시는 JSON을 통해 작성된 예시이다.
URL을 통해 어떤 데이터를 수정할 지 파라미터를 받는다. 또한, 수정할 데이터 값을 Body 값을 통해 받는다.
데이터 조회에 성공하면, Body값에 저장한 데이터 값을 저장해 성공 응답을 보낸다.
※ POST와 PUT은 구분해 사용해야 한다!
POST는 새로운 데이터를 계속 생성하기에 요청시마다 데이터를 생성하지만,
PUT은 사용자가 데이터를 지정하고 수정하는 것이기 때문에 같은 요청을 계속하더라도 데이터가 계속 생성되진 않는다.
DELETE
DELETE 메소드는 지정된 리소스를 삭제할 때 사용된다.
DELETE /user/1
데이터를 삭제하는 것이기 때문에 요청시에 Body 값과 Content-Type 값이 비워져있다.
URL을 통해서 어떠한 데이터를 삭제할지 파라미터를 받는다.
데이터 삭제에 성공한다면 Body 값 없이 성공 응답만 보내게 된다.