[TIL]HTTP

ddoni·2020년 12월 25일
0
post-custom-banner

HTTP

HTTP 란?

HTTP는 Hyper Text Transfet Protocol의 약자로 컴퓨터끼리 HTML로 만든 웹페이지를 주고받으며 소통할때 지켜야할 규약이다.

HTTP 특징

  1. Request / Response

    편지를 발신자가 보내면 수신자가 보낸 내용에 대해 답변을 하듯이 컴퓨터들끼리의 소통에도 요청을 보내면 응답을 하는 식으로 진행된다.

  2. StateLess

    말그대로 HTTP의 특징 중 하나는 상태가 없다라는 뜻이다. 각각의 HTTP 통신은 독립적이기 때문에 이전에 어떤 통신을 보내고 받았는지(요청/응답) 전혀 알 수 없다. 이는 매통신마다 데이터를 담아 요청을 보내야하는 번거로움이 발생하기 때문에 연속된 데이터 처리가 필요한 경우 브라우저 쿠키에 로그인 토큰을 저장할 수 있는 기술을 사용할 수 있다.

Request / Response 메세지 구조

  • Request 메세지 구조 (프론트엔드 → 백엔드)

    요청 메세지는 start line - headers - body 세부분으로 구성되어 있다

    1. start line : 데이터 처리방식 method, 데이터가 보내질 곳 주소, http 버전을 표기한다

      **GET /login HTTP/1.1**

      Get 부분 : HTTP Method로 body 부분에 담긴 클라이언트 데이터를 서버에서 어떻게 처리해야하는지 method로 알려주는 방식이다. 주도 GET, POST, DELETE 가 많이 쓰인다.

      login HTTP 부분 : 데이터가 전송될 서버의 주소

      1.1 부분 : 사용되는 HTTP Version을 나타낸다. 주로 1.1 버전이 널리 쓰인다.

    2. Headers : 보내는 요청에 대한 추가 정보를 담는 부분

      Headers: {
      	**Host**: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다
      	(ex. www.apple.co.kr)
      	**User-Agent**: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, ~~explorer~~)
      	**Content-Type**: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
      	**Content-Length**: body 내용의 길이
      	**Authorization**: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다
      }

      content-type, content-length 는 바디에 들어가게 될 데이터의 타입을 결정해준다. (json이면 데이터가 json 형태로 보여지게끔)

    3. Body : 요청에 대한 실제 데이터가 담긴다

      Body**:** {
      	"user_email": "jun.choi@gmail.com"
      	"user_password": "wecode"
      }

      주로 요청 메소드가 POST인 경우 나타난다.

  • Response 메세지 구조 (백엔드 → 프론트엔드)

    응답 메세지도 status line - headers - body 세부분으로 구성되어 있다.

    1. Status line : HTTP 버젼, 응답 상태코드, 코드에 대한 메세지를 보여준다

      **HTTP/1.1 200 SUCCESS**

      HTTP/1.1 부분 : 요청했던 HTTP 버젼과 동일

      200 부분 : 응답 상태 코드

      SUCCESS : 응답 상태를 간략히 설명해주는 메세지

    2. Headers : 응답에 대한 추가적인 정보를 담고있는 부분

    3. Body : 요청하는 메소드 타입에 따라 body는 항상 존재하지 않는다.

      //로그인 요청에 성공한 경우 토큰을 반환해준다.
      Body: {
      	"message": "SUCCESS"
      	"token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
      }

HTTP Request Methods

  1. GET

    필요한 데이터를 서버로부터 받아(GET)올 때 사용하는 메소드로 데이터를 받아오기만 할때 사용된다.

  2. POST

    데이터를 생성 / 수정 할 때 주로 사용되는 메소드로 바디부분에 관련된 데이터 값을 포함하여 보낸다.

  3. DELETE

    특정 데이터를 서버에 삭제 요청할때 보내는 메소드.

Request Status Codes

200 : OK

주로 GET요청 성공, 업데이트 성공시 반환되는 코드이다

201 : Created

데이터베이스에 없었던 새로운 데이터가 생성되었을때 반환되는 코드이다 (주로 POST 요청에서 이루어짐)

400 : Bad Request

잘못된 요청인 경우 반환되는 코드

401 : Unauthorized

권한이 없는 유저의 정보를 보냈을때 반환되는 코드

403 : Forbidden

접근이 불가능한 곳에 접근하여 권한이 없는 경우 반환되는 코드

404 : Not Found

요청된 url이 존재하지 않는 경우

500 : Internal Server Error

서버에서 문제가 발생한 경우 반환되는 코드

post-custom-banner

0개의 댓글