[CS]HTTP

sujin·2022년 9월 1일
0

TIL

목록 보기
13/14
post-thumbnail

HTTP

HTTP란?

HyperText Transfer Protocol의 약자이다.

  • HyperText : 문서와 문서가 링크로 연결되어 있음을 의미
  • Transfer : HTML로 만든 웹페이지 문서를 보낸다는 의미
  • Protocol : 협약, 통신 규약이라는 의미를 가짐, 물리적으로 떨어진 컴퓨터끼리 어떻게 HTML파일을 주고 받을 지에 대한 약속이다.

요약하자면, HTTP란 컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속이다.


특징

Request / Response (요청 / 응답)

  • HTTP 통신의 핵신은 요청과 응답에 있다.
  • 전송은 보내는 주체와 받는 주체가 존재하는데, 보내는 주체는 받는 주체에세 요청을 보내고 받는 주체는 요청을 보낸 주체에게 응답을 보내는 것이다.

Stateless (상태없음)

  • 각 HTTP통신(요청/응답)은 독립적이기 때문에 과거의 통신에 대한 내용을 전혀 알지 못한다.
    • 이전의 상태를 모른다는 것은 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야한다 는 것이다.
  • 따라서, 여러번의 통신의 진행과정에서 연속된 데이터 처리가 필요한 경우 (쇼핑몰 로그인 후 장바구니 기능)를 위해서는 로그인 토큰, 브라우저 쿠키, 세션, 로컬스토리지 같은 기술에 의해 만들어 진 것이다.
    참고) 쿠기,세션,웹 스토르지의 차이점

request(요청)과 reponse(응답)구조

1. start line

  • 항상 첫 번째 줄에 위치한다.
  • start line에는 요청이나 응답의 상태를 나타낸다.
    • request는 HTTP method를 나타낸다. method는 수행할 작업(GET, PUT, POST, DELETE), 방식 (HEAD, OPTIONS)를 설명한다.
  • reponse에서는 status line이라고 부른다.
    • 현재 포로토콜의 버전(HTTP/1.1) / 상태 코드(200,302,404) / 상태 코드(Not Found)에 대한 설명으로 이루어져 있다.

2. HTTP headers

  • 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합이다.

3. body

  • 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함한다.
  • 요청과 응답의 유형에 따라 선택적으로 사용한다.
    • 모든 응답에 body가 필요한 것은 아니다.
    • 201, 204와 같은 상태 코드를 가지는 응답에는 본문이 필요하지 않다.

HTTP Methods

GET

  • 이름 그대로 어떤 데이터를 서버로 부터 받아(GET)올 때 주로 사용하는 메소드이다.
  • 데이터를 받아오기만 할 때 사용 된다.
  • 간단하고 가장 많이 사용되는 메소드 이며, 웹페이지를 띄울때 필요한 정보들은 모두 GET메소드 요청을 보내서 받아온 응답을 화면에 띄우는 것이다.
// (축약된 요청 메세지)
GET /shop/bag HTTP/1.1
Headers: {"HOST": "https://www.apple.com/kr",
    "Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}

// (축약된 응답 메시지) 
HTTP/1.1 200 OK
Body: {
    "message": "SUCCESS",
    "carts": [
        {
          "productId": 10
          "name": "Pro Display XDR - Nano-texture 글래스"
          "price": "₩7,899,000"
          "quantity": 1
       },
       {
         "productId": 20
         "name": "Mac Pro"
         "price": "₩73,376,000"
         "quantity": 2
       } 
    ]
}

POST

  • 데이터를 생성 / 수정 할 때 주로 사용되는 메소드
  • 데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함되서 보내진다.
// (축약된 요청 메세지)
POST /shop/bag HTTP/1.1
Headers: {
  "HOST": 
  "https://www.apple.com/kr"
  "Authroization": 
  "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
Body: {
  product: {
    "productId": 30
    "name": "12.9형 iPad Pro Wi-Fi + Cellular 128GB"
    "color": "스페이스 그레이"
    "price": "₩1,499,000"
    "quantity": 1
  }
}

// (축약된 응답 메시지)
HTTP/1.1 201 Created
Body: {
  "message": "SUCCESSFULLY CARTS UPDATED"
}

DELETE

  • 특정 데이터를 서버에서 삭제 요청 을 보낼 때 사용한다.
// (축약된 요청 메세지)
DELETE /shop/bag HTTP/1.1
Headers: {
  "HOST": "https://www.apple.com/kr"
  "Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
Body: {
  productId: 30
}

// (축약된 응답 메시지)
HTTP/1.1 204 No Content

status code

Success

  • 200 : OK
    • 문제없이 요청에 대한 처리가 백엔드 서버에서 이루어졌을 때
  • 201 : Created
    • 대게 POST메소드의 요청에 따라 백엔드 서버에 데이터가 잘 생성, 수정 되었을 때
  • 204 : No Content
    • 요청이 성공했으며, 제공할 응답메세지가 없을 경우 사용
    • 주로 DELETE 메소드의 요청으로 성공적으로 삭제되어 응답으로 제공할 컨텐츠가 없을 때 사용

Client Error

  • 400 : Bad Request
    • 해당 요청이 잘못되었을 때
    • 주로 요청의 body에 보내는 내용이 잘못되었을 때 사용됨
    • ex) 전화번호에 숫자가 아닌 문자열 주소가 담겼을 경우
  • 401: Unauthorized
    • 유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원가입을 해야됨을 의미
    • ex) 회원이 아니면 위시리스트, 좋아요 기능을 사용할 수 없다.
  • 403: Forbidden
    • 유저가 해당 요청에 대한 권한이 없다는 의미 / 접근 불가능한 정보에 접근한 경우
    • ex) 유료 회원만 접근할 수 있는 데이터를 요청했을 때
  • 404: Not Found
    • 요청한 URL이 존재하지 않다는 것을 의미

Server Error

  • 500: Internal Server Error
    • 서버에 에러가 났을 때

마무리✨

http에 대해 정리하면서 우리가 사용하고 있는 웹페이지가 어떻게 돌아가는지 알 수 있었다.
아직까지는 완벽하게 이해하지 못하는 부분들도 있겠지만, 앞으로의 프로젝트와 개발을 진행하면서 실제로 코드들을 보고 치면서 익숙해지면 더 완벽히 이해할 수 ... 있을거다😉

profile
개발댕발

0개의 댓글