HTTP는 HyperText Transfer Protocol의 약자로 하이퍼텍스트 문서를 교환하기 위하여 사용된 통신규약이다. 즉, 웹 서버와 클라이언트 간의 통신을 하기 위한 통신 규약이다.
HTTP는 웹에서만 사용하는 프로토콜로 TCP/IP 기반으로 서버와 클라이언트의 요청과 응답을 전송한다.
클라이언트 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다
예시
POST /payment-sync HTTP/1.1 #1 Start Line
#2 Headers
Aceept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: intropython.com
User-Agent: HTTPie/0.9.3
#3 Body
{
"imp_uid": "imp_1234567890",
"merchant_uid": "order_id_8237352",
"status": "paid"
}
GET /search HTTP/1.1
GET
, POST
, PUT
, DELETE
, OPTIONS
등등이 있다.GET
, POST
를 많이 사용./login
1.0
, 1.1
, 2.0
이 있음key : value
값으로 구성되어 있다 (:
이 사용됨)host : google.com
HOST
, Value => google.com
general headers
, request headers
, entity headers
)application/json
)Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json
Content-Length: 257
Host: google.com
User-Agent: HTTPie/0.9.3
POST /payment-sync HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: intropython.com
User-Agent: HTTPie/0.9.3
{
"imp_uid": "imp_1234567890",
"merchant_uid": "order_id_8237352",
"status": "paid"
}
HTTP/1.1 404 Not Found
User-Agent
대신 Server
를 사용HTTP/1.1 404 Not Found
Connection: close
Content-Length: 1573
Content-Type: text/html; charset=UTF-8
Date: Mon, 20 Aug 2018 07:59:05 GMT
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
<title>Error 404 (Not Found)!!1</title>
<style>
*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
</style>
<a href=//www.google.com/><span id=logo aria-label=Google></span></a>
<p><b>404.</b> <ins>That’s an error.</ins>
<p>The requested URL <code>/payment-sync</code> was not found on this server. <ins>That’s all we know.</ins>
HTTP Method는 클라이언트와 서버 사이에 이루어지는 요청(request)과 응답(response) 데이터를 전송하는 방식을 말한다.
HTTP Method 8가지 종류가 있다.
데이터를 서버로 부터 받을 때(GET) 주로 사용되는 Method.
URL에 해당하는 정보의 전송 요청.
데이터의 전달 : 이름과 값을 한 쌍으로. (ex. key:value
)
데이터의 구분 : &
사용. (ex. key1:value1&key2:value2
)
데이터가 URL에 노출.
인코딩.디코딩의 과정이 없기 때문에 POST보다 빠르다.
URL의 길이 제약으로 인해 많은 데이터 전송은 무리.
데이터 생성/수정/삭제 없이 받오이기만 할 때 사용한다.
데이터를 생성/수정/삭제 할 때 주로 사용되는 Method.
데이터는 HTTP Body에 숨겨서 서버로 전송
GET으로 받을 수 없는 많은 양의 자료를 전송할 때 사용
HTTP Status Code는 굉장히 많은 종류가 있다.
모두 숫자 세자리로 이루어져 있으며, 아래와 같이 크게 다섯 부류로 나눌 수 있다.
참고 : WIKIPEDIA - HTTP 상태코드
HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp
http -v google.com/no-such-uri
GET /no-such-uri HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: google.com
User-Agent: HTTPie/0.9.3
HTTP/1.1 404 Not Found
Content-Length: 1572
Content-Type: text/html; charset=UTF-8
Date: Mon, 20 Aug 2018 08:46:48 GMT
Referrer-Policy: no-referrer