☁️ Cloud

HTTP Method

›프로젝트를 정리하다가 API 통신에서 사용했던 http 메소드가 궁금해져 정리해보려고 한다 😀

 

HTTP 메소드란?

: 클라이언트가 서버에게 사용자 요청의 목적을 알리는 가이드라인이다. 이러한 가이드라인을 잘지켜야 RESTful한 API를 작성할 수 있다고 한다. RESTful한 API는 REST 특징을 지킨 API인데, 여기서 REST는 http 통신에서 어떤 자원에 대한 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 Resource(URI)로 요청을 보내는 것이라고 한다. 킁. (*URI은 URL을 포함하는 개념!)

아직까지는 REST를 API를 어떻게 만들 것인가에 대한 표준 정도로 생각하고 있다.

 

 

아무튼 이러한 RESTful API의 구성요소 중 하나인 Method를 알아보고자 한다.

HTTP 메소드에는 GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH가 있다.

내가 연결해 본 메소드는 GET, POST, DELETE, PATCH 이 정도이다 (〃⌒▽⌒〃)ゝ

 

GET

서버에게 리소스를 요청할 때 사용한다. URI(URL)이 가진 정보를 검색하기 위해 서버 측에 요청한다.

이 때 body 값을 보내는 것을 지양한다고 하는데, 프로젝트 당시 서버 담당 분이 몰랐어서 서로 당황했던 기억이 난다. (결국 POST로 변경하셨음) iOS의 HTTP 네트워크 라이브러리 중 하나인 Alamofire을 사용했을 때는 아예 GET - body 방식이 불가능했는데 찾아보니깐 가능한 client도 있는 듯 하다. 어떤 클라이언트에서는 GET 요청 시 body를 붙이면 POST로 보낸다고 한다.

 

HEAD

GET과 동일하지만 메시지 부분을 제외하고! 상태 줄과 헤더만 return 한다. 즉, body는 return하지 않는다.

 

 

POST

서버에 데이터를 전송하기 위해 사용한다. 보통 입력한 데이터를 등록하기 위해 사용한다.

프로젝트에서 GET 다음으로 많이 연결한 메소드인 것 같다.

 

PUT

POST와 마찬가지로 서버에 리소스를 저장하기 위해 사용한다. 차이점은, 리소스가 있으면 대체하고(덮어쓰고) 리소스가 없으면 생성한다는 것이다. 

 

PATCH

PUT은 전체 리소스를 대체하지만, PATCH는 리소스를 부분적으로 수정할 수 있다.

프로젝트 당시에는 게시글 / 사용자 정보를 수정할 때 사용했었다.

 

 

DELETE

말그대로 해당 위치에 있는 리소스를 삭제한다.

 

여기까지는 직접 경험해본 METHOD였다. 다음 건 찾아봐도 잘 와닿지 않는다. 킁

 

CONNECT

요청된 리소스와 양방향 통신을 시작해주는 메소드. 터널을 열어서 TCP 연결할 수 있도록 해주는 메소드인 듯 하다. 🤯

 

 

OPTIONS

클라이언트가 보낸 요청을 서버가 허용해주는지, 통신 가능 옵션을 설명할 때 사용한다고 한다.

OPTIONS 키워드로 요청을 보내서, 서버가 자신의 리소스에 대해 지원하는 메소드의 목록을 반환할 수 있게 할 수 있다.

오오 그렇군.

 

 

 

상대적으로 자주 쓰인다는 메소드들을 정리해보면 다음과 같다.

HTTP 메소드 의미 URI 회원가입 API일 때? 비고
GET 조회하다 /users?age=20 20살 유저를 조회하겠다. 쿼리스트링, 경로변수
POST 생성하다 /user 유저를 생성하겠다. (회원가입) 패킷 바디
PATCH 일부 수정하다 /user 유저를 수정하겠다. 패킷 바디
PUT 전체 수정하다 /user 유저를 수정하겠다. 패킷 바디
DELETE 삭제하다 /user/1 유저를 삭제하겠다.(회원탈퇴) 쿼리스트링, 경로변수

 

 

메소드 이름이 정말 직관적이다..!

정말 간단한 수준으로 정리한 것이라서 누군가에겐 도움이 되지 않겠지만 나중에 더 깊이 있는 내용으로 채워넣기로 약속 ^^!