공부
[HTTP의 이해] 1. 개요, HTTP 메소드, HTTP 상태 코드
glory
2020. 10. 1. 16:19
HTTP(Hyper Text Transfer Protocol)
- Application Layer Protocol (OSI 7)
- 신뢰할만한 전송 혹은 세션 레이어의 연결을 통해 메시지를 주고받는, 상태가 없는(stateless) 요청/응답 프로토콜
HTTP Client
- 서버와 연결을 맺고 하나 이상의 HTTP 메시지를 보내는 프로그램
HTTP Server
- 클라이언트의 연결을 수락하고 HTTP 요청을 처리하여 응답을 보내주는 프로그램
HTTP Method
Properties
- Idempotent : 여러번 요청해도 의도한 효과는 한번 요청한 것과 같다.
- Safe : 근본적으로 read-only인 효과를 의도한 요청
1. Get
- "서버의 리소스를 달라"
- Safe, Idempotent
GET /example HTTP/1.1
Host: example.org:8080
2. POST
- "서버에 데이터를 보내겠다"
- Unsafe, Non-Idempotent
POST /example HTTP/1.1
Host: example.org:8080
Content-Type: application/json
{"name": "naver"}
3. PUT
- "서버가 갖고있는 리소스를 내가 보내는 것으로 대체하라"
- Unsafe, Idempotent
PUT /example HTTP/1.1
Host: example.org:8080
Content-Type: application/json
{"name": "naver"}
※ 주의 : 리소스를 "수정"하는 요청이 아니다. 리소스를 URL에 가져다 넣는 것(Get했을 때 읽을 수 있는 정보를 모두 파라미터로 넘겨야한다)
4. DELETE
- "서버가 가지고있는 리소스를 삭제하라"
- Unsafe, Idempotent
DELETE /example/1 HTTP/1.1
Host: example.org:8080
5. PATCH
- "서버가 가지고있는 리소스를 수정하라"
- Unsafe, Non-Idempotent
PATCH /example/1 HTTP/1.1
Host: example.org:8080
Content-Type: application/json-patch+json
If-Match: "abc123"
[{"op": "replace"}, {"path": "/location", "value", "Seoul"}]
6. OPTIONS
- "특정 URL에 대한 옵션들을 알려달라"
- 보통 사용 가능한 메소드들을 반환함
7. HEAD
- "GET으로 요청하면 어떤 헤더들을 받게 될 지 알려달라"
- GET과 같으나 본문이 없음
8. TRACE
- "내 요청이 서버에 갔다가 응답이 돌아올때 까지 어떤 프록시들을 거치느니 알려달라"
9. CONNECT
- SSL 터널이 등 특수 용도에 사용하는 메소드
HTTP Status Code
1xx - Informational (100, 101)
- 100 Continue
- 101 Switching Protocols
2xx - Successful (200 ~ 206)
- 200 OK
- 201 Created
- 202 Accepted : 처리가 오래 걸리는 request의 경우, 우선 OK로 응답하고 후처리(background job)로 처리한 결과를 페이지에 띄우거나 결과 상태를 보여줄 때 사용
- 204 No Content : Delete 시(본문이 필요없는 경우), 특별히 요청자에게 보여줄 본문이 필요없을 때
3xx - Redirection (300 ~ 307)
- 301 Moved Permanently
- 302 Moved Temporary
- 303 See Other : 무조건 redirect, "이유는 필요없고 다른 곳을 봐"
- 304 Not Modified
- 307 Temporary Redirect
- 308 Permanently Redirect
※ 301, 302와 307, 308의 차이 : 301, 302는 Redirect 시 Method를 유지시키는 것을 보장하지 않는다. 307, 308은 Method를 유지시켜서 바뀐 URL에 request UA의 Method를 전달한다. (307, 308을 표준으로 사용하는 것으로 권장)
4xx - Client Error (400 ~ 417)
- 400 Bad Request
- 403 Forbidden
- 404 Not Fount
5xx - Server Error (500 ~ 505)
- 500 Internal Server Error
- 502 Bad Gateway
- 503 Service Unavailable
http status code 참고 : https://en.wikipedia.org/wiki/List_of_HTTP_status_codes