HTTP

Alex of the year 2020 & 2021·2020년 7월 19일
0

Web, Server, Git, etc.

목록 보기
6/11
post-thumbnail

HTTP

HyperText Transfer Protocol

  • 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조"
  • Web Browser(Front)와 Web Server(Back)가 통신을 할 때 사용하는 통신 규약
  • Backend와 Frontend 서버 간의 통신에 사용될 뿐만 아니라, Frontend 서버와 클라이언트 서버간의 통신에도 사용.
  • 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol (이었으나 오늘날 영상, 사진 등등 모든 다양한 정보를 교환할 수 있는 스케일로 발전)
  • 웹을 넘어서, 인터넷이 동작하는 근간
  • TCP/IP 기반

HTTP의 특징

  • 클라이언트가 서버로 보내는 Request + 서버가 클라이언트에게 보내는 Responses 구조
  • 클라이언트와 서버의 모든 통신은 Request, responses로 이루어짐
  • Stateless: 어떤 요청과 응답을 저장을 하지 않는다 --> 매번이 독립적인 요청과 응답. 이 성질로 인해 꼭 요청을 보내는 클라이언트쪽에서 갖고 다녀야하는 것이 token.
  • 만일 다중 요청&응답 진행 과정 중에 있거나, 다중 데이터가 필요할 때는 쿠키나 세션 등을 사용하게 됨

HTTP request의 구조

  • Start Line + Headers + Body
  • Start Line
    : 말 그대로 HTTP request의 첫 라인.
    : HTTP Method(get, post, put, delete, options 등) + 해당 request가 전송되는 목표 uri인 Request target(ex. /login) + HTTP version(ex. 1.0, 1.1, 2.0 등)
    : start line ex. GET /search HTTP/1.1
  • Headers
    : 해당 request에 대한 추가 정보(ex. request 메시지의 content-length)를 담고 있는 부분
    : Key:Value값으로 되어 있음 ex. HOST: google.com
    : 자주 사용되는 hearder 정보에는 HOST, User-Agent(요청 보내는 클라이언트에 대한 정보), Accept(해당 요청이 받을 수 있는 응답 타입), Connection(해당 요청이 모두 끝난 후, 클라이언트와 서버가 네트워크 커넥션을 유지할 것인지?), Content-Type(해당 요청이 보내는 메시지 body의 타입. ex. application/json), Content-Length(메시지 바디의 길이) 등이 있음
  • Body
    : 해당 리퀘스트의 실제 내용(메시지)
    : 바디가 없는 request도 있는데, 특히 GET request에 많다.
  • Start Line, Headers, Body를 모두 갖춘 HTTP request의 예시

HTTP response의 구조

  • Status Line + Headers + Body (Start line은 request에서 쓰는 용어임)
  • Status Line
    : HTTP response의 첫 라인.
    : HTTP Version + 숫자로 된 응답 상태를 나타내는 코드인 status code(ex. 200) + 응답 상태를 간략하게 설명해주는 status text(ex. OK, Not Found)
    : start line ex. HTTP/1.1 404 Not Found
  • Headers
    : request의 그것과 거의 동일
    : 다만 response에서만 사용되는 헤더값들이 있다. (User-Agent 대신 Server가 사용된다든가 하는)
  • Body
    : 역시 request의 그것과 거의 동일하다.
    : 바디가 없는 request도 있는데, 특히 데이터를 전송할 필요가 없을 경우 바디가 비어있게 된다.
  • Status Line, Headers, Body를 갖춘 HTTP response의 예시 (옆으로 코드 좀 짤림)

자주 쓰이는 HTTP methods - GET, POST

GET
이름 그대로 어떠한 데이타를 서버로 부터 받아올 때 주로 사용하는 Method.
데이터 생성/수정/삭제 없이 오로지 받아오기만 할때 사용된다.
가장 간단하고 많이 사용되는 HTTP Method
언급한대로 주로 데이터를 받아올때 사용되기 때문에 request에 body를 보내지 않을 때도 많다.

POST
데이터를 생성/수정/삭제 할때 주로 사용되는 Method.
데이터를 생성 및 수정 할때 많이 사용하기 때문에 대부분의 경우 requst body가 포함되서 보내진다.


자주 보게 될 HTTP Status Code - 200, 301, 400, 401, 405, 404, (백엔드가 가장 싫어하는)500

200 OK
가장 자주 보게되는 status code.
문제없이 모든 것이 실행 되었을때 보내는 코드.

301 Moved Permanently
해당 URI가 다른 주소로 바뀌었을때 보내는 코드.

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp

400 Bad Request
해당 요청이 잘못된 요청일 때 보내는 코드.
주로 요청에 포함된 input 값들이 잘못된 값들이 보내졌을때 사용되는 코드.
예를 들어, 전화번호를 보내야 되는데 text가 보내졌을때 등등.

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

403 Forbidden
유저가 해당 요청에 대한 권한이 없다는 뜻.
예를 들어, 오직 과금을 한 유저만 볼 수 있는 데이터를 요청 했을때 등.

404 Not Found
요청된 uri가 존재 하지 않는다는 뜻.

500 Internal Server Error
서버에서 에러가 났을때 사용되는 코드.
API 개발을 하는 백앤드 개발자들이 싫어하는 코드.


references:
https://stackoverflow.com/c/wecode/questions/308
https://opentutorials.org/course/3385

profile
Backend 개발 학습 아카이빙 블로그입니다. (현재는 작성하지 않습니다.)

0개의 댓글