Wecode 21일차-TIL

kimu2370·2020년 2월 17일
0

오늘은 저번 웹에 대한 정리를 하다가 못다한 HTTP에 대해서 정리하고자 한다.

HTTP 란?

  • HyperText Transfer Protocol의 약자로
    하이퍼 텍스트(HTML) 문서를 교환하기 위해 만들어진 통신 규약이다.
  • 즉, 웹 상에서 네트워크로 서버끼리 통신을 할 때 어떠한 형식으로 데이터를 전달할지를 정해놓은 규칙이라고 보면 된다.
  • HTTP는 TCP/IP 기반으로 되어 있다.

HTTP 특징

  • HTTP 기본적으로 요청/응답 (request/response)구조로 되어 있다.
  • 클라이언트가 HTTP requset를 서버에 보내면 서버는 HTTP response를 보내는 구조.
  • 클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어 진다.
  • HTTP는 Stateless라고 해서 말그대로 상태를 저장하지 않는다. 즉, 요청이 오면 그 요청에만 응답을 처리할 뿐 다른 요청과 응답에는 연관성 없이 독립적이다.
    만약 여러 요청과 응답의 진행과정이나 데이터가 필요할 때는 쿠키나 세션 등을 사용하게 된다.

HTTP 종류 및 구조

HTTP는 데이터를 요청하는 HTTP request 와 데이터를 전달해주는 응답인 HTTP response로 구분되어 진다.

  • HTTP request

    • start line

      말 그대로 HTTP request의 첫 라인이다.
      • HTTP Method
        • 해당 requset가 의도한 action을 정의하는 부분.
        • HTTP Methods의 종류로는 GET , POST , PUT , DELETE , OPTIONS 등등이 있다.
        • 주로 GETPOST가 쓰인다.
      • Request target
        • 해당 request가 전송되는 목표 uri(목적지를 뜻한다.)
        • ex) /login.(endpoint라고도 한다.)
      • HTTP Version
        • 말 그대로 사용되는 HTTP 버젼. 버젼에는 1.0, 1.1, 2.0 등이 있다.
    • headers

      • 해당 request에 대한 추가 정보를 담고 있는 부분.
        • ex) request메시지 body의 총 길이(content-Length) 등.
      • Key : Value 값으로 되어 있다.( : 이 사용됨).
        • key : value
        • HOST : google.com => Key = HOST, Value = google.com
      • Headers 또한 3부분으로 나뉜다.(general headers, request headers, entity headers)
      • 자주 사용되는 header 정보에는 다음이 있다.
        • Host
          요청이 전송되는 target의 host url을 뜻한다. (google.com)
        • User-Agent
          요청을 보내는 클라이언트의 대한 정보. (웹브라우저에 대한 정보)
          최근에는 구글에서 이 정보에 대한 불필요성을 느끼고 삭제한다는 얘기가 있다.
        • Accept
          해당 요청이 받을 수 있는 응답 타입. (application/json)
        • Connection
          해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 connection을 유지 할지 안할지에 대해 지시하는 부분.
        • Content-Type
          해당 요청이 보내는 메시지 body의 타입. Json을 보내면 (application/json)
        • Content-Length
          메시지 body의 길이.
    • body

      • 해당 request의 실제 메시지/내용.
      • Body가 없는 request도 많다.
        ex) GET request들은 대부분 데이터를 얻고 싶어서 요청을 보내는 것이기 때문에 body가 없는 경우가 많다.
    • 구조

  • HTTP response

    • status line

      • HTTP 버전
        HTTP response의 버전을 나타낸다.
      • Status code
        응답 상태를 나타내는 코드. 숫자로 되어 있는 코드. ( 200 )
      • Status text
        응답 상태를 간략하게 설명해주는 부분.( Not Found )
    • headers

      • Response의 headers와 동일하다.
        다만, User-Agent 대신에 Server 헤더가 사용된다.
    • body

      • Response의 body와 일반적으로 동일하다.
      • Request와 마찬가지로 모든 response가 body가 있지는 않다. 데이터를 전송할 필요가 없을 경우 body가 비어있게 된다.

자주 쓰이는 HTTP Methods

  • GET

    • 이름 그대로 어떠한 데이터를 서버로부터 받아올 때 주로 사용한다.
  • POST

    • 데이터를 생성/수정/삭제 할 때 주로 사용되는 Method이다.

알고 있으면 좋은 HTTP Methods

  • OPTIONS

    • 주로 요청 URI에서 사용할 수 있는 Method를 받아올 때 사용된다.
      예를 들면, /update uri에서 어떤 method를 요청 할 수 있는지를 알고 싶으면 먼저
      OPTIONS 요청을 사용해서 확인할 수 있다.

자주 쓰이는 HTTOP Status Code

  • 200 OK

    • 자주 보는 상태 코드
    • 문제 없이 실행 되었을 때 나타난다.
  • 301 Moved Permanently

    • 해당 URI가 다른 주소로 바뀌었을때 보내는 코드.
  • 400 Bad Request

    • 해당 요청이 잘못된 요청일 때 보내는 코드.
    • 주로 요청에 포함된 input 값들이 잘못된 값들이 보내졌을 때 사용되는 코드.
      • ex) 전화번호를 보내야 하는데, text가 보내졌을 때 등등.
  • 401 Unauthorized

    • 유저가 해당 요청을 진행 할려면 먼저 로그인을 하거나 회원 가입을 하거나 등등이 필요하다는 것을 나타내려 할 때 쓰이는 코드.
  • 403 Forbidden

    • 로그인은 됐지만, 어떤 페이지에 들어가려고 할때 그 권한이 없을 때 쓰이는 코드.
  • 404 Not Found

    • 해당 목적지 주소가 존재 하지 않을 때 쓰이는 코드.
  • 500 Internal Server Error

    • 서버에서 에러가 났을 때 사용되는 코드.
profile
어제 보다 더 나은 개발자가 되고 싶은

0개의 댓글