Basic of HTTP

이진경·2019년 10월 16일
0

HTTP

HyperText Transfer Protocol (하이퍼텍스트들을 전송하는 규약)
HTTP는 TCP/IP 기반
글을 보내는 데 http프로토콜에 맞춘 글을 보내는 것이 서버끼리의 통신이다
HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜입니다. (이러한 단점을 해결하기 위해 Cookie와 Seesion 등장)
HTTP는 연결을 유지하지 않는 프로토콜이기 떄문에 요청/응답(request/response) 방식으로 동작함.

  • HTTP는...

요청& 응답 (request/response)

기본적으로 request & response로 구성, 이 자체가 통신이다
일방적으로 보내기만 하는 규약도 있음

stateless

통신 자체가 그 이전에 통신이 있었던 것을 모름
그 상태(state)를 저장하지 않는다
즉, 서로의 요청&응답 끼리 연결되어 있지 않음 단발성으로 요청한데에 대한 응답을 할 뿐 그 히스토리가 저장되어 있지 않음
그다음 통신에 그걸 알게 하려면 보내면서 일전에 로그인했다는 정보를 담아서 보내야 그 다음 통신이 알 수 있게 되고 그런것을 쿠키나 세션에 담아놓음

  • HTTP request 구조

start line

request의 첫라인이고 3부분으로 되어 있다.

  • http method
    요청의도를 보여주는 부분
  • request target
    해당 request가 전송되는 목표 url
    end point; 상대성이 있는 끝. 특정 end point의 주소
    api의 실행은 원격 실행의 의미가 있음.
    a에서 b를 실행시키고 싶을 때 b의 ip주소/서버등을 알면 할 수 있지만 상세주소를 알아야 정확하게 갈 수있음. 상세주소 모르면 '/'로 마무리해도 됨
    ex>은마아파트
    fetch ( " http:// 127.0.0.1:8000/signup")에서 127~1까지가 은마아파트,
    8000은 몇동 signup은 몇호 라고 받아들이면 됨.
  • http version
    2.0이 default . 말그대로 http버젼

headers

해당 요청에 대한 부가설명
jason처럼 key :value로 되어 있다

  • host ; 해당 서버의 주소
  • user-agent ; 해당 크롬에 대한 정보. user의 ip주소 등 이사람이 방금 brooks brothers다녀온 사람인 건 안다. 그사람이 돌아다닌 것들 추적이 가능..
  • accept : 해당 요청에 대한 타입
  • connection : (keep-alive )계속 통신을 유지할 지 끊을 지 지시
  • content-type : 보내는 메세지의 타입
  • content-length : body content의 길이 (대부분 압축해서 보냄)

body

해당 reqeust의 실제 메세지/내용.
Body가 없는 request도 많다.
GET request들은 대부분 body가 없는 경우가 많음.

  • HTTP response 구조

start line

첫라인이고 request처럼3부분으로 되어 있다.
상태를 간략하게 나타내줌
3부분으로 구성되어 있다.

  • HTTP 버젼
  • Status code: 응답 상태를 나타내는 코드. 숫자로 되어 있는 코드.
    예를 들어, 200
  • Status text: 응답 상태를 간략하게 설명해주는 부분.
    예를 들어, "Not Found"

headers

request의 header와 동일하나 user-agent대신 server가 있음

body

request와 동일함. 하지만 모든 response가 있지는 않다!

http methods **

여러가지가 있었지만 요새는 하기 건들로 가는 것이 추세
!어려운 문제를 쉽게 하는 것이 잘하는 것!

  • GET
    어떤 데이터를 가져오는 것, 받아오기만 할 때 사용
    (렌더되었을 때 빠로 뿌려주는 정보들이라든가.. 가령, 해당 트위터의 트윗을 가져오는 느낌)
    가장 간단하고 많이 사용되면서 데이터를 받아올 때 주로 사용되기 때문에 body를 안보내는 경우가 많음

  • POST
    데이터 생성/수정/삭제 시 주로 사용 (트위터에서 새 트윗을 올리는 것)
    수정, 삭제할 때 주로 사용하기 때문에 대부분 request에 body 포함시켜 보낼 때가 많다

  • options
    특정 end point가 어떤 메서드를 사용하는 지 알아 낼때 사용

HTTP STATUS CODE

  • 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 Serer Error
    서버에서 에러가 났을때 사용되는 코드.
    API 개발을 하는 백앤드 개발자들이 싫어하는 코드.

0개의 댓글