본문으로 바로가기

HTTP Method란?

category 개발/인프라, CS 2021. 3. 14. 00:58

http method는 http(hyper text transfer protocol)라고 불리는 프로토콜이다. 처음에는 웹 브라우저와 서버의 커뮤니케이션을 목적으로 디자인되었지만 지금에 와서는 Rest API라는 이름으로 불리우며 분리형 어플리케이션의 통신 규격으로 쓰인다. 기본적으로 http요청은 서버와 브라우저 어느쪽에서든 상대에게 요청을 보낼 수 있으며 단순한 숫자, 문자열뿐만 아니라 authorization등의 정보도 전달할 수 있다.

 

http프로토콜에서 지원하는 메서드는 여러가지가 있지만 그중 가장 자주 사용되는건 GET, POST 두개다. 두 메서드의 특징을 나열해보자면

GET

  • 브라우저 히스토리에 요청 기록이 남는다
  • 북마크가 가능하다
  • 데이터 길이 제한이 있다
  • 주로 데이터를 요청할때 사용된다

POST

  • 브라우저 히스토리에 요청 기록이 남지 않는다
  • 북마크되지 않는다 
  • 데이터 길이에 제한이 없다

정리해보면 GET은 서버의 리소스에서 데이터를 요청할때, POST는 서버의 리소스를 새로 생성하거나 업데이트할때 사용된다.

 

이렇게 http프로토콜을 사용해 서버로 요청을 보낼 수 있는데 이때 서버측으로 보낼 데이터에 포함될 수 있는 데이터 필드의 목록은 아래와 같다.

  • Params
  • Authorization
  • Headers
  • Body

Params은 http://site.com?userId=1&page=5와 같이 페이지 URL의 뒤에 붙어서 오는것을 의미한다. Authorizatoin은 순전히 인증절차만을 위한 데이터를 보내는 형식으로 API Key, Oauth, Bearer Token등의 데이터 타입을 사용할 수 있다. Headers는 Body에 포함하고 싶지 않는 데이터를 담는데 쓰인다. 마지막인 Body는 전송하고자 하는 데이터의 전말이 담기는곳으로 Authorization이나 Headers를 사용하지 않고 Body만을 사용해서 데이터 교환과 인증을 실행할수도 있다.

 

Body의 데이터는 Json형태로 저장되어야만 하며 만약 http 요청을 보내는쪽의 프로그램 언어 포맷이 javascript가 아닐경우 자체 배열등을 json_decode()등의 내장함수를 이용하여 json형태로 바꾸어줘야만 한다.

HTTP 응답코드

웹 브라우저에서 서버에 http 요청을 보냈다고 가정해보자. 서버는 해당 요청을 받고 적절한 처리를 거쳐 응답을 할 것이다. 이경우 아까말했던 데이터들과 함께 http 응답코드라는것이 내포되어 오는데 이 응답코드에 따라 서버측의 상황을 알 수 있다. 기본적으로 200번 응답코드는 요청이 정상적으로 처리되었다는것을 의미하지만 이외의 응답코드는 다양한 종류의 오류 혹은 요청 실패를 뜻하므로 코드만을 보고 서버측의 상황을 알수 있게 된다. 아래는 HTTP 응답 코드의 종류이다

응답 코드 설명
100 Continue
101 Switching Protocol
200 OK - 요청이 정상적으로 수행됨
201 Created - PUT 메소드에 인해 원격지 서버에 파일 생성됨
202 Accepted - 웹 서버가 명령 수신함
203 Non-authoritative information - 서버가 클라이언트 요청중 일부만 전송
204 No conent - 요청을 처리하였으나 응답할 데이터가 없음
301 Moved permanently - 요청된 데이터를 변경된 타 URL에 요청함
302 Not temporarily
304 Not modified - 컴퓨터의 로컬 캐시 정보를 이용함
400 Bad request - 사용자의 잘못된 요청을 처리할 수 없음
401 Unauthorized - 인증에 필요한 페이지를 요청함
402 Payment required - 예약됨
403 Forbidden - 접근 금지
404 Not founded - 요청한 페이지 없음
405 Method not allowed - 허용되지 않은 http 메서드 사용됨
407 Proxy authentication required - 프록시 인증 요구됨
408 Request timeout - 요청 시간 초과
410 Gone - 영구적으로 사용 금지됨

이 외에도 다양한 응답 코드가 있지만 주로 사용되는 것은 이정도이니 Open API등을 사용할때 참고하면 좋을것 같다.