Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

(스파르타 코딩클럽) HTTP 메서드란 본문

TIL

(스파르타 코딩클럽) HTTP 메서드란

H.S-Backend 2024. 7. 22. 10:53

클라이언트와 서버사이에 이뤄지는 요청와 응답 데이터를 전송하는 방식.

종류는 주로 GET, POST, PUT, PATCH, DELETE를 사용한다.

메서드 이름
설 명


GET
리스소 조회


POST
등록, 요청 데이터 처리 


PUT
리소스 덮어쓰기 (해당 리소스가 없으면 생성)


PATCH
리소스 부분 분경 (PUT은 전체 변경이지만, PATCH는 일부만 변경)


DELETE
리소스 삭제


HEAD
GET과 동일하나 메시지 부분(Body)를 제외하고, 상태 줄과 헤더만 반환


OPTIONS
대상 리소스에 대한 통신 가능 옵션(메서드)을 설명 (주로 CORS에서 사용)


CONNECT
대상 자원으로 식별되는 서버에 대한 터널을 설정


TRACE
대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

GET메서드는

리소스를 조회하는 메서드로 서버에 전달하고 싶은 데이터는 Query(쿼리 파라미터, 쿼리 스트링)을 통해서 전달한다.

 

메시지 바디를 통해 서버로 요청데이터를 전달하고 서버는 바디를 통해 들어온 데이터를 처리하여 응답합니다.

주로 신규 리소스를 등록하고, 프로세스 처리에 사용한다.

 

GET 메서드를 사용할 때 JSON으로 조회 데이터를 넘겨야 하는 경우 POST를 사용한다.

 

PUT 메서드

리소스가 있다면 요청을 보낸 데이터로 완전히 덮어씌우고, 리소스가 없다면 새로 생성합니다.

POST와의 차이점으로 클라이언트가 리소스의 위치를 알고 URI를 지정한다.

 

위  그림에서 POST 요청시 /users까지 지정을 했지만, PUT은 /users/10으로 리소스의 위치까지 지정해서 요청한다.


PUT 사용할 때 기존 리소스를 완전히 대체하기에

위 처럼 country필드만을 변경하려고 요청을 보내면 

기존 데이터를 날리고 요청한 데이터를 새로 덮어쓰기에 name필드가 제거가 된채로 요청받은 country필드만 존재하게 된다.


PATHC메서드는 

PUT과 다르게 PATCH는 리소스의 부분을 변경한다.

PATCH를 지원하지 않는 서버가 있을 수도 있을 때는 POST를 사용한다.

 

DELETE 메서드

요청받은 리소스를 제거한다.


HTTP메서드의 속성

HTTP메서드는 다음과 같이 3가지 속성이 있으면서 속성별로 메서드를 구분할 수 있다.

SAFE(안전)

Idempotent(멱등)

Cacheable(캐시 가능)

 

Safe(안전)
  • Safe한 메서드는 "호출해도 리소스를 변경하지 않는다"는 특징을 갖는다.
  • GET, HEAD, OPTIONS, TRACE 메서드는 호출하더라도 리소스를 변경하지 않기에 안전한 리소스가 된다.
Idempotent(멱등)

멱등이란 연산을 여러번 적용하더라도 결과값이 달라지지 않는 것,

  • GET : 한 번 조회하든, 여러번 조회하든 같은 결과가 조회
  • PUT : 결과를 대체하므로 같은 요청을 여러번 해도 최종 결과는 똑같다.
  • DELETE : 결과를 삭제, 같은 요청을 여러번 해도 삭제된 결과는 똑같다.
  • 외부 요인으로 중간에 리소스가 변경되는 것까지는 고려하지않는다.
Cacheable(캐시 가능)

응답 결과를 서버에 캐싱해서 사용해도 되는 메소드

  • GET, HEAD, POST, PATCH 가 캐시 가능하지만, POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하기에 구현은 어렵다.
  • 실제로는 GET, HEAD 정도만 캐시하여 사용한다.

 

반응형