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등을 사용할때 참고하면 좋을것 같다.
'개발 > 인프라, CS' 카테고리의 다른 글
vscode remote ssh와 aws key pair의 사투 보고서 (0) | 2021.03.29 |
---|---|
[AWS] SSL인증서 적용된 Https 웹서버 구축하기 (1) | 2021.03.28 |
Linux/Git/Docker 명령어 + Docker Image로 만드는 웹서버 (0) | 2021.01.23 |
HTTPS와 SSL의 작동 구조 (0) | 2020.12.30 |
DNS는 어떻게 작동하는가? (0) | 2020.12.28 |