HTTP 통신

초이지수·2022년 4월 7일
0
post-thumbnail

컴퓨터 간의 소통을 위한 통신하러 왔습니다만?


HTTP는 컴퓨터 간의 소통을 위한 통신규약이다.

  • 요청응답으로 이루어져있다!
  • HTTP stateless한 특징으로 안한 매 요청과 응답은 이전 상태를 알지 못한다!

일단 이 정도로 요약하고 스따뚜!!!!!!!!!!!!!!!!!!


👻 HTTP

컴퓨터 특히 웹으로 통신할 때 제일 많이 쓰이는 소통 방식!

약어로 이루어져 있다!

  • HTML(Hyper Text Markup Language)
    Hyper Text = 문서와 문서가 링크로 연결되어 있음을 뜻함!

  • Transfer
    전송하다 = 물건이나 편지 따위를 보내다
    HTML로 만든 웹페이지 문서(파일)를 보낸다!

  • Protocol 규약
    컴퓨터끼리 어떻게 HTML 파일을 주고 받을 지에 대한 소통방식 또는 약속


👻 Request 와 Response

요청이 있어야 응답이 있다!

  1. 요청이 먼저 Client
  2. 그러면 응답 server

👻 Stateless

state(상태) + less(없다)
<-> stageful은 상태를 저장한 것!

HTTP 개별 통신은 모두 독립이라 과거의 HTTP 통신결과(상태)를 보존하지 않는다.

응답을 받아서 저장하고, 필요한 정보를 포함해서 요청!

나 로그인 했어! 라고 알려줘야함!
요청을 보낼 때 토큰에 요청을 다 담아서 요청해야함!


왜 stateless?

넷플릭스는 1초에 요청이 몇 만건 된다. 모든 요청을 stateful 하게 기억하려고 하면 과부하가 걸릴 수 밖에 없다.


🙋‍♀️ Request 메세지 구조

크게 세 가지의 구조로 나뉨!

Start Line = 제목으로 보면 됨!
Headers = 주석같은 느낌! 이거 참고해애~ 느낌. 메타데이터(부가정보)
Body = 본문 (본문이 필요없는 method에 따라 없을 수도 있다!)


🙋‍♀️ Response 메세지 구조

Start Line만 다름!

보통 Body에 message로 보여주는게 아니라
Status Line에
404 = 이거 뜻은 Not Found야
200 = SUCCESS = 요청이 성공했어!

언어로 통신하게 되면?
-> 아랍인이랑 통신하면 메세지가 아랍어로 옴....
통일성이 없다! 그래서 국제적인 표준으로 코드로 통신함!


🙉 HTTP Request Methods

자주 사용하는 세 가지

  • GET
    데이터를 받아오기만 할 때 사용
    웹페이지에 접속해서 필요한 데이터를 불러올 때 사용
    Body는 안 씀! 그냥 달라고 요청하는 거라 헤더까지 쓰면 됨

  • POST = 보낸다 (역할이 광범위 한 편)
    데이터를 생성/ 수정할 때 사용
    Body에 담는 내용이 핵심!
    요청 : 나 장바구니에 아이패드 담을래!
    응답 : 담았어! 201 create

  • DELETE
    서버에 저장된 특정 데이터를 삭제할 때 사용
    요청 : 나 장바구니 아이패드 지울래!
    응답 : 204 No Content 내가 보내줄 건 없어!


🙉 status code

많이 보게 되는 응답 상태 코드

이것들은 표준임! 표준을 지켜서 소통 해야되는 것!

1. Success

  • 200 : OK
    가장 자주 보게되는 Status Code
    문제없이 요청에 대한 처리가 백엔드 서버에서 이루어지고 나서 오는 응답코드

  • 201 : Created
    무언가가 잘 생성되었을 때 에(Successfully Created) 오는 Status Code
    대게 POST 메소드의 요청에 따라 백엔드 서버에 데이터가 잘 생성 또는 수정 되었을 때에 보내는 코드입니다.

  • 204 : No Content
    요청이 성공했으며 제공할 응답메세지가 없을 경우 사용하는 Status Code
    DELETE 메소드의 요청으로 성공적으로 삭제되어서 응답으로 제공할 컨텐츠가 없을 때

2. Client Error

  • 400 : Bad Request
    해당 요청이 잘못되었을 때 보내는 Status Code
    주로 요청의 Body에 보내는 내용이 잘못되었을 때 사용되는 코드
    ex) 전화번호를 보내야 하는데 숫자가 아닌 문자열의 주소가 대신 Body에 담겼을 경우 or 로그인할 때 이름, 패스워드를 보내줘야하는데 주소를 보내준다던가,,

  • 401 : Unauthorized = 인증이 되지 않음, 나 너 누군지 몰라!
    유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원가입이 필요하다는 의미를 나타내는 Status Code
    ex) wish list, 좋아요 기능은 회원이 아니면 요청을 보낼 수 없습니다.

  • 403 : Forbidden = 나 너 누군지 아는데 권한 없어
    유저가 해당 요청에 대한 권한이 없다는 의미를 나타내는 Status Code
    접근 불가능한 정보에 접근했을 경우를 의미합니다.
    ex) 오직 유료회원만 접근할 수 있는 데이터를 요청 했을 때

  • 404 : Not Found
    요청된 URI 가 존재하지 않는다는 의미를 나타내는 Status Code

3. Server Error

  • 500: Internal Server Error
    서버에서 에러가 났을 때의 Status Code
    예측범위 외에서 에러가 났을 때 많이 나타남
    client는 왜 에러가 뜬지 모름... 서버에서 찾아야함
    바로 제가 찾아야 합니다! 하하 🥺

역시 모든 세계에는 약속과 규정이 있다. 약속을 잘 지켜서 소통하는 것이 중요할 것 같다.
제 3의 언어 같다! 이 규정을 통해 지구 반대편 사람들과도 소통할 수 있다니,, 싱난다!!!!!!
어서어서 배워서 200 ok를 다 때려버려야지!!!!!!!!!!!!! 햣

profile
닫혀 있어서 벽인 줄 알고 있지만, 사실은 문이다.

0개의 댓글