HTTP

BnDC·2021년 9월 12일
0

Basics

목록 보기
2/3

✨ HTTP(Hyper Text Transfer Protocol)

클라이언트-서버 사이에 Hyper Text (html문서)를 전송하기 위한 통신 규약



🎈 Stateless

상태가 없는 프로토콜, 데이터를 주고 받기 위한 각각의 데이터 (요청/응답)이 서로 독립적으로 관리가 되기 때문에 과거의 (요청/응답)에 대한 내용을 전혀 알지 못한다.

따라서 클라이언트는 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다.

하지만 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고 다수의 요청을 처리할 수 있고, 서버의 부하를 줄일 수 있는 성능 상의 이점이 있다




🎈 Request

클라이언트가 서버에 필요한 데이터를 요청

Start line

GET / payment-sync HTTP/ 1.1
(1)      (2)      (3)

(1) HTTP Method - 요청이 의도한 동작 명시
(2) Request target - request가 전달될 목표 url
(3) HTTP Version - 사용되는 HTTP 버전, 주로 1.1

Headers

요청에 대한 메타 데이터를 담고 있는 부분
key:value 로 표현 된다.

Headers: {
	Host: www.kurly.com
	User-Agent: HTtPie/0.9.3
	Content-Type: application/json
	Content-Length: 83 
	Authorization: ~~~
}
  • Host: 요청을 받게될 웹사이트의 기본 주소
    (ex. www.apple.co.kr)

  • User-Agent: 요청을 보내는 클라이언트의 대한 정보
    (ex. chrome, firefox, safari, explorer)

  • Content-Type: 해당 요청이 보내는 메세지 body의 타입
    (ex. application/json)

  • Content-Length: body 내용의 길이

  • Authorization: 회원의 인증/인가를 처리하기 위해 로그인 token을 담는 곳

Body

HTTP 요청이 전송하는 실제 데이터를 담고 있는 부분
주로 body부분을 사용하는 methond는 POST이고, 전송하는 데이터가 없다면 body 부분은 비어 있게 된다.

{
	"imp_uid": imp_1234567890",
    "merchant_uid": order_id_8237352,
    "status": "paid"
}



GET / payment-sync HTTP/ 1.1

Headers: {
	Host: www.kurly.com
	User-Agent: HTtPie/0.9.3
	Content-Type: application/json
	Content-Length: 83 
	Authorization: ~~~
}

{
	"imp_uid": imp_1234567890",
    "merchant_uid": order_id_8237352,
    "status": "paid"
}




🎈 Response

Status Line

(1) HTTP Version - 사용되는 HTTP 버전
(2) Status Code - 응답 상태를 직관적으로 알려준는 숫자
(3) Status Text - status code에 더해 부가적으로 설명해주는 부분

HTTP request의 header 부분과 동일 대신 HTTP Response에만 사용되는 header 값들이 있다. User-Agent 대신 Server header 사용

Body

HTTP request의 body 부분과 동일




✔ Method의 종류

GET

어떤 데이터를 서버로부터 요청할 때 사용되는 method
데이터를 받아 오는 요청임으로 body가 비어있는 경우가 많다.

POST

데이터를 생성하거나 수정 및 삭제 요청을 할 때 사용하는 method GET과 함께 가장 자주 사용되는 HTTP method다.

PUT

데이터를 생성 할 때 사용되는 method, POST로 처리 할 수 있으므로 PUT보다 POST를 사용

DELETE

데이터를 삭제 할 때 사용되는 methond, PUT과 마찬가지로 POST로 처리 할 수 있으므로 Delete보다는 POST사용




✔ Status Code/Text의 의미

200 OK

HTTP 요청이 문제없이 성공적으로 처리 되었르 때 보내는 status code/text

301 Moved Permanently

HTTP 요청을 보낸 엔드포인트의 URL 주소가 바뀌었다는 것을 나태나는 status code/text
해당 엔드포인트의 새로운 주소가 포함된 Location header가 포함되는 것이 일반적이다.
location header에 포함된 새로운 주소에 해당 요청을 다시 보내게 되고 이 과정을 redirection이라고 한다.


400 Bad Request

HTTP 요청이 잘못된 오청일 때 보내는 status code/text 예를 들어 전화번호에 숫자가 아닌 문자가 포함된 경우

401 Unauthorized

클라이언트의 신분확인이 요구되나 확인할 수 없을 때 보내는 status code/text 사용자가 로그인이 필요한 경우

403 Forbidden

클라이언트가 해당 요청에 대한 권한이 없음을 나타내는 status code/text, 유료 contents를 이용 할 때, 비용을 지불하지 않은 상태일 경우 서버는 403 응답을 보낼 수 있다.

404 Not Found

HTTP 요청을 보내고자 하는 URI가 존재하지 않을 때 보내는 응답 코드


500 Internal Server Error

내부 서버 오류가 발생했다는 것을 알려 주는 응답 코드
요청을 받은 서버에서 해당 요청을 처리하는 과정에서 서버 오류(error)가 나서 해당 요청을 처리할 수 없을 때 사용하는 응답 코드

profile
“Life is C (Choice) between B (Birth) and D (Death).” - 인생은 B와 D사이의 C

0개의 댓글