네트워크

[HTTP] HTTP 메서드

da77777 2022. 6. 14. 17:23

HTTP 메서드

클라이언트가 웹서버에게 요청하는 목적(종류)를 알리는 수단

 

주요 메서드 GET, POST, DELETE, PUT, PATCH 

GET
데이터 조회

캐싱이 가능하여 동일한 데이터를 한 번 더 조회할 경우 조회 속도가 빠름

body와 Content-Type이 비워져 있으며 주로 쿼리스트링으로 파라미터를 주고받음

body로 데이터를 전달할 수는 있으나 지원하는 곳이 많지 않으므로 권장x

조회 성공 시에는 body에 데이터 값을 담아보냄

조회만 하므로 멱등성o

 

POST
신규 데이터를 등록하거나 프로세스 처리에 사용 

등록할 데이터를 담은 body와 데이터 형식을 명시한 ContentType 필요
→ Content-Type : application/x-www-form-urlencoded (폼 형식 데이터임을 명시하는 HTTP header 형식)

동일한 요청을 여러 번 보냈을 때, 항상 같은 결과물이 나오는 것을 보장하지 않음

멱등성x

 

DELETE
데이터 삭제

body와 Content-Type 값 비워져 있음

동일한 요청을 여러 번 보내는 경우, 첫 요청에서 이미 데이터가 삭제되고 없어서 에러 코드를 반환하고 데이터는 변화가 없음 → 멱등성o

 

PUT

데이터가 있는 경우는 전체 변경(덮어쓰기), 데이터가 없는 경우는 생성

변경사항이 없는 속성이라도 모두 포함해야 하며, 속성 중 일부만 보낼 경우 그 외의 값은 null 혹은 default 값으로 처리됨

body와 ContentType 필요

동일한 요청을 여러 번 보내는 경우, 같은 값을 계속 덮어쓰기 하는 꼴이기 때문에 결과적으로 동일한 데이터를 유지하므로 멱등성o

 

PATCH
데이터 일부 변경

PATCH 요청에 포함되지 않은 속성은 기존 데이터가 유지되므로, 변경사항이 없는 데이터는 보낼 필요 없음

body와 ContentType 필요

멱등성x

 

 

그 외 메서드 HEAD, OPTIONS, TRACE, CONNECT

HEAD : GET과 동일하나 HTTP 응답 메시지에 body 없이 header 정보와 상태만 반환

OPTIONS : 가능한 메소드에 대한 질의(주로 CORS에서 사용)

TRACE : 목적지 서버에 대한 루프백 테스트를 위해 사용

CONNECT : 요청에 대한 양방향 연결을 시작하는 메서드(서버에 대한 터널을 설정)

 

 

HTTP 메서드의 속성

안전, 멱등, 캐시가능

  • 안전(Safe Methods)
    서버의 상태를 변경시키지 않는 메서드
    모든 안전한 메서드는 멱등성을 가지나, 그 역은 성립하지 않음 (PUT, DELETE는 멱등하나 안전메서드는 아님)
    ex) GET, OPTIONS, HEAD
  • 멱등(Idempotent Methods)
    메서드를 계속 호출해도 서버의 상태가 동일한 메서드
    통계 기록(요청을 보냈다는 기록)을 제외하고는 부수 효과가 존재해서는 안됨
    HTTP 응답 Status는 관계없음
    멱등성을 가지는 메서드의 경우, 메서드가 여러 번 실행되어도 결과는 같기 때문에 안전하게 사용할 수 있음
    ex) GET, PUT, DELETE, HEAD, OPTIONS (단 올바르게 구현했을 때에 한함)
    - DELETE : 동일한 데이터에 대해 DELETE 요청을 여러번 보낼 경우 → 존재하지 않는 데이터에 대한 삭제요청이기 때문에 HTTP status가 404이 뜰지라도 결과적으로 서버측 데이터는 변화가 없으므로 DELETE도 멱등성을 가지는 것
    - PATCH : 멱등할 수도, 멱등하지 않을 수도 있음. 가령 'name'이라는 속성과 'age' 라는 속성이 있을 때, 'age' 속성에 대해 '10'이라는 데이터를 보내는 경우가 있다고 가정해보자. 이때 (1) 'age를 10으로 변경하라'는 요청과 (2) 'age에 10을 더해라'는 요청을 여러번 했을 때, 둘 다 일부 데이터를 변경하는 것이지만 각각의 결과가 다르다. (1)은 멱등하나 (2)는 멱등하지 않음
  • 캐시가능(Cacheable Methods)
    캐싱을 통해 데이터를 효율적으로 가져올 수 있는 메서드
    ex) GET, HEAD, POST, PATCH (실제로는 GET과 HEAD만 주로 캐싱에 사용)

 

HTTP 메서드 별 특성 정리

HTTP 요청에 body 여부 응답에 body 여부 안전 멱등성 캐시가능
GET(조회) X O O O O
POST(생성) O O X X O
DELETE(삭제) X O X O X
PUT(수정/생성) O O X O X
PATCH(수정) O O X X O
HEAD X X O O O
OPTIONS O/X (선택가능) O O O X
TRACE X O O O X
CONNECT O O X X X

 

 

 

 

 

 


참고

https://kyun2da.dev/CS/http-%EB%A9%94%EC%86%8C%EB%93%9C%EC%99%80-%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C/

 

http 메소드와 상태코드

HTTP 메소드란 HTTP 메소드는 이다. 최초의 HTTP에서는 GET 메소드 하나밖에 없었지만 이후 다양한 메소드들이 생겨났다. HTTP 메소드 종류와 특징 HTTP 메소드의 종류는 총 9가지가 있다. 이 중 주로 쓰

kyun2da.dev

https://fidget278.tistory.com/33

 

HTTP 메소드 정리

HTTP 메소드란? HTTP 메소드는 클라이언트가 웹서버에게 사용자 요청의 목적이나 종류를 알리는 수단이다. 최초의 HTTP 에서는 GET 메소드 하나밖에 없었지만 이후 다양한 메소드들이 생겨났다. HTTP

fidget278.tistory.com

https://velog.io/@yh20studio/CS-Http-Method-%EB%9E%80-GET-POST-PUT-DELETE

 

Http Method 란? (GET, POST, PUT, DELETE)

평소에 코딩을 하면서 서버와 클라이언트가 소통을 하기 위해서 보통 Http를 이용을 하게 되었습니다. 그런데 GET, POST, PUT, DELETE 등 여러가지의 Http Method 가 존재하는데 명확하게 사용하고 있을까?

velog.io

https://hudi.blog/http-method-idempotent/

 

HTTP 메소드의 멱등성, 그리고 안전한 메서드

https://nordicapis.com/understanding-idempotency-and-safety-in-api-design/ 멱등성 (Idempotent) 수학이나 전산학에서의 멱등성의 의미는 같은 연산을 여러번 실행한다고 해도 그 결과가 달라지지 않는 성질을 의미한

hudi.blog

 

'네트워크' 카테고리의 다른 글

TCP와 UDP  (0) 2022.07.14