이번에는 HTTP의 메서드에 대해서 알아보려고한다.
우리가 HTTP API를 설계해야하는 상황이 왔을 때 우리는 HTTP 메서드에 대해서 알아두어야만 한다.
예를들어 조회기능, 등록 기능, 수정 기능, 삭제 기능등 여러가지 기능을 구현 할 때에 말이다.
그렇다면 많이 쓰이는 HTTP의 메서드들에 대해서 알아보자
먼저 Get 메서드이다.
Get : 리소스 조회
- 서버에 전달하고 싶은 데이터는 query를 통해서 전달함 (메시지 바디를 통할 수도 있지만 권장하지 않는다.)
*** Get 방식(예제)
Get /members/100 HTTP/1.1 Host: localhost:8080 이런 식으로 접근 = 요청
members/100 안에있는 메시지 내용을 가져와서 응답 데이터를 보낸다.
다음으로는 Post 메서드이다.
Post : 요청 데이터 처리, 주로 새 리소스 등록에 사용
- 메시지 바디를 통해서 서버로 요청 데이터 전달함, 그러면 서버는 요청 데이터를 처리한다.
*** Post 방식(예제)
Post /members HTTP/1.1 Content-Type:application/json {json 내용} 이런 식으로 데이터를 보냄
서버에서는 members/100을 만들어 해당 데이터를 저장함 (처리)
리소스 마다 요청 데이터를 어떻게 처리해야 할 지는 따로 정해야한다.
Get 방식으로 데이터에 접근하기 힘들다면 Post 방식을 통해 데이터를 가져와서 처리하는 방법도 있다. (어쩔 수 없는 경우)
다음으로는 Put 메서드이다.
Put : 리소스를 대체, 해당 리소스가 없으면 생성
- 리소스가 없으면 생성, 있으면 대체 한다. = 덮어쓰기
- 기존의 리소스를 완전히 대체하기 때문에 리소스를 부분변경하고 싶다면 patch를 사용하면 된다.
*** 클라이언트가 리소스를 식별한다. *** => post와의 차이
Patch: 리소스 부분 변경
Delete : 리소스 삭제
외에도 Head, Options, Connect, Trace 가 있다.
이런 HTTP 메서드들의 특성에 대해서도 알아보자.
안전, Safe - 호출해도 리소스를 변경하지 않는다. (변경하는 것들은 해당되지 않음)
멱등, Idempotent - 몇 번을 호출하든 결과가 똑같다. (Get 같은 조회, Put 같은 덮어쓰기, Delete 삭제이기 때문)
캐시가능, cacheable - 응답 결과 리소스를 캐시해서 사용해도 되는가(Get, Head, Post, Patch 가능, but 보통 get, head 만 사용)
*** Post와 Patch는 본문 내용까지 캐시 키로 고려해야하지만 구현이 쉽지 않기에, 거의 get만 사용됨***
참고 - https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
'오늘의 공부 > WEB' 카테고리의 다른 글
HTTP 상태코드 (0) | 2022.03.20 |
---|---|
HTTP 메서드의 활용 (0) | 2022.03.20 |
HTTP에 대하여 (0) | 2022.03.20 |
URI(URL, URN) (0) | 2022.03.20 |
DNS에 대해서 (0) | 2022.03.20 |