-
HTTP 메서드개발자로서 알아야 할 CS/HTTP 웹 기본 지식 2022. 1. 27. 14:21728x90반응형
- HTTP 메서드
- 메서드 종류
- HTTP 메서드의 속성
HTTP 메서드
클라이언트가 서버로 요청을 할 때, 어떠한 목적을 갖는 행위인지 HTTP 메서드에 명시한다. 일종의 약속인 것을 기억하자. 클라이언트가 처리를 원하는 방법을 메서드에 명시할 테니 서버에서는 그 메서드에 명시한 대로 응답을 보내달라는 일종의 약속이다. 이러한 약속으로 클라이언트와 서버 간 데이터 통신을 할 수 있게 되는 것이다.
또한 중요한 사실 하나!
같은 URI라도 HTTP 메서드에 따른 다른 처리를 할 수 있다는 것이다. 예를 들어
/members/{member_id}
라는 URI를 클라이언트가 요청시 요청 메시지의 GET, POST, PUT, PATCH, DELETE의 메서드를 사용할 때 각 메서드에 맞는 처리를 한 URI에서 처리할 수 있게 된다.
@GetMapping("/members/{member_id}")
@PostMapping("/members/{member_id}")
@PutMapping("/members/{member_id}")
....
HTTP 메서드의 종류
- GET : 리소스 조회, 서버에게 리소스를 달라는 요청 (조회)
- POST : 요청 데이터 처리, 주로 등록에 사용 (삽입)
- PUT : 리소스를 대체(변경이아닌 대체라는 것에 명심하자), 해당 리소스가 없으면 생성 (수정)
- PATCH : 리소스 부분 변경 (수정)
- DELETE : 리소스 삭제 (삭제)
- 그 외 메서드 : HEAD, OPTIONS, CONNECT, TRACE
GET
- 리소스 조회
- 리소스를 조회하기 위해 필요한 데이터는 query(쿼리 스트링)를 통하여 전달
POST
- 메시지 바디를 통해 서버로 요청 데이터 전달
- 서버는 클라이언트로부터 받은 요청 데이터를 처리
- 신규 리소스 등록, 프로세스 처리 등에 사용
- 단순히 데이터 생성, 변경을 넘어서 프로세스 처리해야 하는 경우 사용
PUT
- 리소스를 변경이 아닌 대체
- 리소스가 있으면 대체, 없으면 생성
- 쉽게 이야기해서 해당 리소스를 덮어씌운다고 생각하면 된다.
- 클라이언트가 리소스를 알고 있어야 한다.(어떤 리소스를 대체할지 클라이언트가 알고 있어야 한다.)
PATCH
- 리소스를 변경
- PUT은 대체, PATCH는 변경인 점을 잘 구분하자
DELETE
- 해당 리소스를 제거
HTTP 메서드의 속성
- 안전(Safe Methods)
- 멱등(Idempotent Methods)
- 캐시가능(Cacheable Methods)
안전(Safe Methods)
- 여러번 호출해도 리소스의 변경이 일어나지 않는 것을 안전하다고 한다.
- GET, HEAD, OPTIONS, TRACE
멱등(Idempotent)
- 한번 이상의 호출에도 항상 호출된 결과는 같아야 한다.
- 한번 호출하던, 100번 호출하던 그 결과는 같아야 한다.
- 자동 복구 매커니즘에 쓰인다.(서버가 TIMEOUT 등의 원인으로 정상 응답을 못주었을 떄 다시 요청)
- 멱등은 외부 요인으로 중간에 리소스가 변경되는 것은 고려하지 않는다.
EX) GET 요청 중간에 PUT 요청으로 리소스가 변경되어 GET 요청의 결과가 달라져도 멱등이라고 한다. - GET : 항상 같은 결과가 조회된다.
PUT : 결과를 대체하므로 항상 같은 결과가 나온다.
DELETE : 결과를 삭제하면 그 이후에 같은 요청이 와도 같은 결과가 나온다 - POST는 멱등이 아니다!
캐시가능(Cacheable)
- 응답 결과 리소스를 캐시로 사용해도 되는가는 판별
- GET, HEAD, POST, PATCH 모두 캐시가능 하지만 보통 GET만 캐시로 사용한다.
참고
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 학습 페이지 (inflearn.com)
728x90반응형'개발자로서 알아야 할 CS > HTTP 웹 기본 지식' 카테고리의 다른 글
HTTP 상태 코드 (0) 2022.02.01 HTTP 메서드의 데이터 전송 방법 (0) 2022.01.27 HTTP 메시지(HTTP message) (0) 2022.01.26 HTTP(HyperText Transfer Protocol)의 특징 (0) 2022.01.26 TCP/IP, 웹 브라우저 요청 흐름 (0) 2022.01.25