HTTP 메서드(HTTP Method)

조은·2022년 10월 18일

HTTP 메서드란?

HTTP 요청 메시지를 보낼 때 주소와 함께 메서드를 함께 보낼 수 있다.
이 때 함께 보내는 메서드를 HTTP 메서드 라고 한다.

자주 쓰는 메서드는 GET, POST, DELETE, PUT, PATCH 등이 있다.

1. GET

  • 특정 리소스의 표시를 요청하는 메서드 (검색, 읽기 등)
  • GET요청이 성공적으로 이루어진다면 XML이나 JSON과 함께 200 (Ok) HTTP 응답 코드를 리턴한다.
  • 에러가 발생하면 주로 404 (Not found) 에러나 400 (Bad request) 에러가 발생한다.
  • 오로지 데이터를 읽을 때만 사용되고, 수정할 때는 사용하지 않는다.
    즉, 데이터를 변경하는 연산에 사용하면 안된다.

2. POST

  • 특정 리소스에 엔티티를 제출할 때 쓰인다.
  • POST 메소드는 주로 새로운 리소스를 생성(create)할 때 사용된다.
  • 성공적으로 creation을 완료하면 201 (Created) HTTP 응답을 반환한다.

3. PUT

  • 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용된다.

4. DELETE

  • 지정된 리소스를 삭제한다.




HTTP 메서드의 속성

HTTP 메소드의 속성에는

  1. 안전(Safe Methods)
  2. 멱등(Idempotent Methods)
  3. 캐시가능(Cacheable Methods)

가 있다.

1. 안전(Safe Methods)

계속해서 메소드를 호출해도 리소스를 변경하지 않는다.
주요 메소드중에는 GET 메소드가 안전하다고 볼 수 있다.

2. 멱등(Idempotent Methods)

메소드를 계속 호출해도 결과가 똑같다.
Get, PUT, DELETE는 멱등하다고 볼 수 있지만 POST나 PATCH는 멱등하다고 볼 수 없다.

3. 캐시가능(Cacheable Methods)

캐싱을 해서 데이터를 효율적으로 가져올 수 있다.
GET, HEAD, POST, PATCH가 캐시가 가능하지만 실제로는 GET과 HEAD만 주로 캐싱이 쓰인다.



번외) GET vs POST

둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식이다.
하지만 둘의 특징을 제대로 이해하여 기술의 목적에 맞게 알맞은 용도에 사용해야한다.


1. GET

GET 방식은 요청하는 데이터가 HTTP Request Message의 Header 부분에 url 이 담겨서 전송된다.
때문에 url 상에 ? 뒤에 데이터가 붙어 request 를 보내게 되는 것이다.
이러한 방식은 url 이라는 공간에 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적이다.
또 보안이 필요한 데이터에 대해서는 데이터가 그대로 url 에 노출되므로 GET방식은 적절하지 않다. (ex. password)

2. POST

POST 방식은 HTTP Request Message의 Body 부분에 데이터가 담겨서 전송된다.
때문에 바이너리 데이터를 요청하는 경우 POST 방식으로 보내야 하는 것처럼 데이터 크기가 GET 방식보다 크고 보안면에서 낫다.(하지만 보안적인 측면에서는 암호화를 하지 않는 이상 고만고만하다.)


GET 은 가져오는 것이다. 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태 등을 변경하지 않는다. SELECT 적인 성향을 갖고 있다고 볼 수 있는 것이다.
반면에 POST 는 서버의 값이나 상태를 변경하기 위해서 또는 추가하기 위해서 사용된다.

부수적인 차이점을 좀 더 살펴보자면 GET 방식의 요청은 브라우저에서 Caching 할 수 있다. 때문에 POST 방식으로 요청해야 할 것을 보내는 데이터의 크기가 작고 보안적인 문제가 없다는 이유로 GET 방식으로 요청한다면 기존에 caching 되었던 데이터가 응답될 가능성이 존재한다. 때문에 목적에 맞는 기술을 사용해야 하는 것이다.

-> GET과 비교하여 URL에 데이터의 정보가 들어 있지 않으므로 조금 더 안전하다고 볼 수 있다.
-> GET 방식은 캐싱을 하기 때문에 여러번 요청시 저장된 데이터를 활용하므로 조금 더 빠를 수 있다.

profile
끄적끄적....

0개의 댓글