HTTP는 팀 버너스리에 의해 발명된 WWW(월드와이드웹)에 내지 된 프로토콜이다.
HTTP를 간단하게 설명하면 웹에서 데이터를 전송하는 약속, 규칙이라고 생각하면 된다.
CERN(유럽입자연구소)에서 일하던 팀버너스리에 의해 HTTP가 제안이 되었다.
사용자가 서버(웹사이트)에 어떤 정보를 얻기위해서는 요청을 해야 하는데 이때 HTTP에서 제공하는 메서드와 헤더에 입력된 정보를 기반으로 정보를 응답받는다.
이런 식으로 우리가 사용하는 웹사이트가 정보를 주고받는다.
요청
GET /restapi/v1.0 HTTP/1.1
Accept: application/json
Authorization: Bearer UExBMDFUMDRQV1MwMnzpdvtYYNWMSJ7CL8h0zM6q6a9ntw
응답
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
Hello World, this is a very simple HTML document.
</body>
</html>
요청 메서드(HTTP 동사)
주어진 리소스(동영상, 메시지, 뉴스글 등)에 수행하길 원하는 행동을 나타낸다. 각각의 메서드는 서로 다른 의미를 구현
HTTP 메서드 | RFC | 간단설명 |
GET | RFC 7231 | 해당 메서드는 특정 리소스를 받기만 요청한다. |
POST | RFC 7231 | 특정 리소스를 제출할 때 사용한다. 서버의 상태 변화를 일으킨다. |
PUT | RFC 7231 | 특정 리소스로 새롭게 생성하거나, 대상 리소스를 대체한다. |
DELETE | RFC 7231 | 특정 리소스를 삭제한다. |
PATCH | RFC 5789 | 해당 메서드는 리소스의 부분만을 수정하는데 사용한다. |
이 외에도 HEAD, CONNECT, OPTIONS, TRACE가 존재한다.
응답 상태 코드
HTTP 요청이 성공적으로 완료되었는지 알려주는 코드입니다. 숫자로 사용자에게 알기 쉽게 표시를 해주며 총 5개의 그룹으로 나누어진다.
- Informational responses(조건부응답) 100 ~ 199
- Successful responses(성공응답) 200 ~ 299
- Redirection messages(재요청응답) 300 ~ 399
- Client error responses(요청오류응답) 400 ~ 499
- Server error responses(서버오류응답) 500 ~ 599
여기서는 자주 접하거나 알아두면 좋은 코드들을 위주로 작성했다.
1xx (조건부응답) : 요청은 잘 받았고 받은 요청을 처리하고 있는 중이다.
해당 상태 코드는 RFC2616에 기록된 내용으로 보면 요청된 내용은 지금까지 모두 정상이며 요청이 계속되거나 이미 완료가 된 상태이면 요청을 무시해라고 적혀있다. 그래서 HTTP/1.0 버전 이후로 웹을 사용하는 사람들은 해당 응답 코드를 볼 수 없다.
100 (계속)
요청한 상태는 괜찮으며 첫 번째 요청을 받았으니 나머지는 기다리고 있다를 나타낸다.
2xx (성공응답) : 요청이 성공적으로 완료되었습니다.
200 (성공)
요청한 내용이 제대로 처리되었고 원하는 리소스를 제공받았다.
201 (생성)
요청이 성공적으로 완료하였고 서버(웹사이트)에 새로운 리소스를 생성했다.
204 (콘텐츠없음)
정상적으로 요청을 마무리했지만 리소스(콘텐츠)를 제공하지 않는다.
3xx (재요청응답) : 요청을 완료하기 위해서 추가 동작을 취해야 한다.
300 (여러선택 항목)
요청에 대해서 하나 이상의 응답이 가능하다. 요청자는 그중에 반드시 하나를 선택해야 한다.
4xx (요청오류) : 잘못된 문법을 사용자가 사용하여 서버가 상태를 이해하지 못한다.
400 (잘못된요청)
잘못된 문법으로 인하여 서버가 요청을 이해하지 못한다.
401 (인증없음)
요청했던 해동이 인증(권한)이 필요하여 사용자는 해당 요청을 위해서 인증을 받아야 한다.
403 (접근금지)
사용자가 해당 리소스에 인증 여부와는 관련 없이 접근할 권리가 없다. (401은 인증 실패, 403은 인가 실패)
404 (찾을 수 없음)
서버가 요청한 페이지(리소스)를 찾을 수 없다. 알려지지 않는 URL을 의미한다.
5xx (서버오류) : 유효한 요청을 서버가 제대로 수행하지 못했을 때를 의미한다.
500 (내부 서버 오류)
서버에 문제가 발생한 것으로 요청을 수행할 수 없다.
위에 입력된 상태 코드와 요청 메서드 말고도 더 다양하니 참고자료에 적힌 사이트에 들어가서 직접 보는 것을 권장합니다.
참고자료
HTTP - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
HTTP 상태 코드 - HTTP | MDN (mozilla.org)
'정보게시판 > 웹' 카테고리의 다른 글
코딩 학습용 게임 사이트, Codepip을 소개합니다. (0) | 2022.07.10 |
---|---|
2022 개발자 트렌드 - StackOverflow와 Programmers (0) | 2022.07.03 |
JWT란? (1) | 2022.06.26 |
네트워크 통신의 포트(Port) (1) | 2022.06.26 |
Apple WWDC 개발자 컨퍼런스 소개 (0) | 2022.06.26 |