컴퓨터 사이언스

HTTP 메서드

woohap 2024. 10. 16. 00:00

HTTP 메서드

클라이언트가 서버에 요청할 때 필요한 행위 
조회, 등록, 수정, 삭제 
GET - 리소스 조회
POST - 요청 데이터 처리, 주로 등록에 사용 
PUT - 리소스를 대체, 해당 리소스가 없으면 생성
PATCH - 리소스 부분 변경
DELETE - 리소스 삭제

기타 HTTP 메서드

HEAD - GET과 동일하지만 메시지 부분을 제외하고 상태 줄과 헤더만 반환 (BODY 제외하고 보냄)
OPTIONS - 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
CONNECT - 대상 자원으로 식별되는 서버에 대한 터널을 설정
TRACE - 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 

GET 메서드

리소스 조회 ( 특정 데이터를 줘 )
서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달 
메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장 X

1. 메시지 서버로 전달
2. 메시지 서버에 도착
3. 클라이언트로 응답 데이터 전송 

POST 메서드

요청 데이터 처리 (데이터를 줄테니 서버가 요청 데이터를 처리해줘 )
메시지 바디를 통해 서버로 요청 데이터 전달
서버는 요청 데이터를 처리 (메시지 바디를 들어온 데이터를 처리하는 모든 기능을 수행)
주로 신규 리소스 등록, 프로세스 처리에 사용 

1. 새 리소스 생성(등록)

2. 요청 데이터 처리 
	- 단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야하는 경우
	결제완료 -> 배달시작 -> 배달완료
	즉, POST 결과로 새로운 리소스가 생성되지 않을 수 있음
	POST /orders/{orderId}/start-delivery(컨트롤 URI)
		- URI에 동사를 넣어서 컨트롤 URI를 만들 수 있다. (어쩔 수 없는 경우 사용)
		
3. 다른 메서드로 처리하기 애매한 경우
	-JSON으로 조회 데이터를 넘겨야하는데, GET 메서드를 사용하기 어려운 경우 

**
POST 요청은 요청 데이터를 어떻게 처리할지 정해진 것이 없기 때문에 
리소스마다 어떻게 처리할지 따로 정해야 함 

1. 메시지 서버로 전달
2. 서버는 메시지를 받아 신규 리소스 생성 
3. 클라이언트로 응답 데이터 전송 
201로 응답하는 경우 Location:/members/100은 생성된 신규 리소스 경로를 보내줌

PUT 메서드(완전히 대체)

리소스를 대체
리소스가 없으면 대체
리소스가 없으면 생성 

기존 파일이 존재하면 기존 파일을 지우고 덮어 씌운다.
기존 파일이 존재하지 않으면 새로운 파일 생성 
**
완전히 대체된다.

**
PUT의 경우 클라이언트가 구체적인 전체 경로를 알고 있음
POST는 구체적인 전체 경로를 모름 

**
즉, 클라이언트가 리소스를 식별

요약
1. PUT은 리소스를 완전히 대체한다.
	- 원래 데이터가 이름과 나이 데이터를 가지고 있을 때, 새로운 요청으로 들어온 데이터가 나이만 가지고
	있는 경우 서버에 나이 데이터만 저장된다. 즉, 기존 데이터가 갱신되는 것이 아닌 완전히 대체된다.
2. 클라이언트가 리소스를 알고 있어야 한다.

**
만약 요청에 포함되지 않은 값들은 NULL이 된다.
(완전히 대체되기 때문

PATCH 메서드 (부분 변경)

PUT과 달리 데이터 일부만 수정할 경우 PATCH를 사용한다.
만약 PATCH 메서드를 지원하지 않는 경우 POST 메서드를 사용하여 변경한다. 

DELETE 메서드 (리소스 제거)

HTTP 메서드 속성

1. 안전 (Safe Methods)

2. 멱등 (Idempotent Methods)

3. 캐시가능 (Cacheable Methods)

안전

호출해도 리소스가 변경되지 않는 것을 의미
안전은 해당 리소스만 고려한다. 
- 로그가 쌓여서 장애가 발생하는 것까지 고려하지 않음 

GET, HEAD는 안전한 HTTP 메서드

멱등

동일한 사용자가 요청을 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다.
f(f(x)) = f(x)

멱등 메서드
GET - 한 번 조회하든, 두 번 조회하든 같은 결과가 조회됨
PUT - 결과를 대체, 같은 요청을 여러 번 해도 최종 결과는 동일
DELETE - 결과를 삭제, 같은 요청을 여러 번 해도 삭제된 결과는 동일 

POST - 멱등 아님, 두 번 호출하면 같은 결제가 중복발생할 수 있음
결제가 두 번 수행 됨
활용
- 자동 복구 메커니즘 
	DELETE 할 때, 제대로 수행되지 않았다고 판단하면 다시 DELETE를 수행
	똑같은 요청을 여러 번 보내도 동일한 결과를 반환하기 때문 

재요청 중간에 다른 곳에서 리소스를 변경한 경우
- 멱등은 외부 요인으로 중간에 리소스가 변경되는 것까지 고려하지 않음 

캐시 가능

응답 결과 리소스를 캐시해서 사용
GET, HEAD, POST, PATCH 캐시 가능
실제로는 GET, HEAD 정도만 캐시로 사용 (실무에서는 GET만 사용됨)
	- POST, PATCH의 경우 본문 내용 즉, BODY까지 캐시 키로 고려해야하므로 구현이 어려움 

'컴퓨터 사이언스' 카테고리의 다른 글

파일 디스크립터  (1) 2024.10.18
OSI 7 계층  (0) 2024.10.17
HTTP 기본 개념  (2) 2024.10.15
TCP/IP, UDP  (0) 2024.10.14
프록시 서버  (0) 2024.10.13