안녕하세요 항상 웃음이 나는 픠식팀 입니다.
HTTP 메서드에 대해서 조금 알아 봅시다~
HTTP 메서드
주로 사용하는 주요 메소드는 GET, POST, PUT, PATCH, DELETE가 있으며 기타 HTTP 메소드로는 HEAD, OPTIONS, CONNECT, TRACE가 존재한다.
- GET: 리소스 조회
- POST: 요청 데이터 처리, 주로 리소스 신규 등록에 사용
- PUT: 리소스 대체
- PATCH: 리소스 삭제
- HEAD: GET과 동일하지만 body를 제외한 상태줄, 헤더만 요청
- OPTIONS: 대상 리소스에 대한 통신 기능 옵션(메소드)을 설명(주로 CORS에서 사용)
- TRACE: 대상 리소스에 대한 경로를 따라 메시지 loop back 테스트를 진행
GET
리소스를 조회한다. 서버에 전달할 데이터는 쿼리 파라미터(=쿼리 스트링)을 이용한다.
(body를 이용하여 전달 할 수는 있으나 권장하지 않는다)
GET 과정
- 클라이언트 즉 사용자는 리소스와 GET 메소드를 서버로 전송한다.
- 해당 메시지가 서버에 전달 되면 서버는 데이터(JSON)을 만들어 응답 메시지에 담아서 클라이언트에 전송한다.
POST
클라이언트가 데이터를 서버에 보내서 서버에서 해당 데이터를 처리해주기 위한 메소드이다.
Message Body를 통해 요청데이터를 전달하여 새로운 데이터를 등록하는 용도로 주로 사용한다.
POST 과정
- 클라이언트가 리소스와 POST 메소드를 담은 요청 메시지를 서버로 전송(서버-클라이언트 간에 POST로 들어온 데이터를 어떻게 다룰지는 미리 정의해져있다.)
- 사용자 등록을 사용한다고 가정했을 때 서버에 리소스가 생성된다.
- HTTP 코드, 자원의 경로, 자원의 데이터 등을 담은 응답 데이터를 클라이언트에 전송한다.
주로 사용하는 POST 메소드 사용 범위 정리
- 새로운 리소스 생성(등록)
- 요청 데이터 처리
- 단순 데이터 생성, 변경이 아닌 프로세스를 처리할 경우
- 구매 → 결제 → 결제 완료
- 프로세스가 상태가 변경되는 경우
- 서버에서 변화가 발생할 때 POST를 사용해야 하는데 POST의 결과로 새로운 리소스가 생성되지 않을 수 있다.
- 구매 → 결제 → 결제 완료
- 단순 데이터 생성, 변경이 아닌 프로세스를 처리할 경우
- 다른 메소드로 처리하기 애매한 경우
PUT과 PATCH의 차이
PUT과 PATCH 메서드는 기존에 존재하던 자원에 업데이트를 실시한다.
둘 다 업데이트를 실시하기 때문에, 횬용해서 API를 구축하게 되기 쉽다.
PUT의 정의
- HTTP PUT 메서드는 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체합니다.
PATCH의 정의
- HTTP PATCH 메소드는 리소스의 부분적인 수정을 할 때에 사용
해당 정의로 이해가 되지 않을 수 있다. 3가지의 관점을 통해서 올바르게 이해
- update 방식의 차이
- PUT
- PUT은 모든 값을 대입해서 보내는 경우 해당 값으로 변경한다.
- 부분적인 값을 대입해서 보내는 경우 없는 값에 대해서는 null로 대체 된다 → 대상 리소스를 나타내는 데이터를 대체한다.
- 결과 적으로 값을 변경하나 없는 값의 경우 null로 변경한다.
- PATCH
- 값을 변경하고 보내지 않은 값은 그대로 유지 된다.
- PUT
- 요청한 URI에 자원이 존재하지 않을 때
- PUT
- 새로운 리소스를 생성한다.
- PATCH
- 새로운 리소스를 생성하지 않고, 오류를 응답해서 보낸다.
- PUT
- 멱등성의 관점
- PUT: 멱등성을 가진다
- PATCH: 멱등성을 가지지는 않는다.
- 동일한 데이터를 2번 보내면 리소스가 테이블에서 한 개로 똑같이 유지되는 것이 아니라 두 개가 된다
HTTP 메소드의 속성
- 안전(safe)
- 호출해도 리소스를 변경하지 않는다면 안전하다(GET, HEAD)
- 안전의 기준은 호출하는 리소스만 고려하므로 호출로 인해 발생할 수 있는 문제는 고려하지 않는다.
- 캐시 가능(Cacheable)
- 응답 결과를 캐시해서 사용할 수 있다.
- 웹 브라우저가 리소스를 저장해서 사용할 수 있다.
- GET/HEAD/POST/PATCH 캐시가 가능하다
- GET/HEAD URL만 캐시키로 지정하면 된다.
- POST/PATCH는 본문 내용까지 캐시키로 지정해야 하기 때문에 구현에 어려움이 있다
- 응답 결과를 캐시해서 사용할 수 있다.
- 멱등성
- 연산을 여러 번 하더라도 결과가 달라지지 않는 성질
클라이언트에서 서버로의 데이터를 전달하는 방식
1. 쿼리 파라미터를 통한 전송
- HTTP 메서드 : GET
- 조회에서 주로 사용
2. 메시지 바디를 통한 전송
- HTTP 메서드 : POST, PUT, PATCH
- 회원가입,상품주문, 리소스 등록, 리소스 변경에 주로 사용
'IT KNOWLEDGE' 카테고리의 다른 글
많이 사용 되는 개발언어들과 그 개발언어들의 특징 (0) | 2023.09.15 |
---|---|
서버와 HTTP 개념 이해 (0) | 2023.09.15 |
[Youtube API] Pagination (0) | 2023.09.11 |
웹 소켓이란 (0) | 2023.09.11 |
클라우드에서의 인공 지능 (0) | 2023.09.01 |
댓글