burnkim61.log
로그인
burnkim61.log
로그인
HTTP Method
Tasic
·
2021년 4월 28일
팔로우
0
TIL
http
web
0
HTTP 메서드 종류
GET
리소스 조회
서버에 전달하고 싶은 데이터는 query(쿼리 파라미터 스트링)을 통해서 전달
메시지 바디를 사용하여 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않음
POST
메시지
바디
를 통해 서버로 요청 데이터 전달
서버는 요청 데이터를 처리
주로 전달된 데이터로
신규 리소스 등록
,
프로세스 처리
에 사용
신규 리소스 등록이 정상적으로 되면 응답 데이터에 생성된 리소스 URL도 보내줌
하지만 새로운 리소스가 생성되지 않을 수 있음
서버의 변화가 있는 경우
리소스의 상태 변경 (상품 준비 상태에서 > 배송중으로 변경)
POST /orders/{orderId}/start-delivery (컨트롤 URI)
다른 메서드로 처리하기 애매한 경우
ex) JSON으로 조회 데이터를 넘겨야 하는데, GET 메서드를 사용하기 어려운 경우
PUT
리소스를 대체, 해당 리소스가 없으면 생성
리소스를 완전히 대체한다(덮어쓰기)
클라이언트가 리소스를 식별 - 클라이언트가 리소스 위치를 알고 URI 지정
ex) PUT /files/hello.jpg
PATCH
리소스 부분 변경
DELETE
리소스 삭제
HEAD
GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
OPTIONS
대상 리소스에 대한 통신 가능 옵션(메서드)을 설명 (주로 CORS에서 사용)
CONNECT
대상 자원으로 식별되는 서버에 대한 터널을 설정
TRACE
대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행
HTTP 메서드의 속성
이미지 : HTTP-위키백과
안전(Safe)
호출해도 리소스를 변경하지 않는다.
- GET : 조회이므로 리소스가 변경 안됨.
멱등(Idempotent)
한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다.
GET : 조회한다.
PUT : 리소스를 대체한다.
DELETE : 리소스를 삭제한다.
POST : 두 번 호출하면 같은 동작을 반복해서 에러가 발 생할 수 있다. (멱등이 아님)
왜 필요한가? - 자동 복구 메커니즘
서버가 TIMEOUT 등으로 정상 응답을 못주었을 때, 클라이언트가 같은 요청을 다시 해도 되는가? 판단 근거
멱등은 외부 원인으로 바뀌는 것 까지는 고려하지 않는다.
캐시가능(Cacheable)
응답 결과 리소스를 캐시해서 사용해도 되는가?
GET, HEAD, POST, PATCH → OK
실제로는 GET, HEAD 정도만 캐시로 사용
POST, PATCH는 본문 내용까지 캐시 키로 고려해야되므로 구현이 쉽지 않음
참고
모든 개발자를 위한 HTTP 웹 기본 지식
Tasic
블로그 옮겼습니다 (https://jotasic.github.io)
팔로우
이전 포스트
웹 브라우저 요청 흐름
다음 포스트
HTTP 상태코드
0개의 댓글
댓글 작성