[TIL-33] HTTP

da.circle·2022년 10월 13일
0

TIL

목록 보기
33/44

HTTP

  • 통신하기 위한 정해진 규약

특징

  1. Request(요청) / Response(응답)

    • 요청이 가면 응답이 와야 한다.
  2. Stateless

    • HTTP의 개별 통신은 전부 독립적이다.
    • 과거 HTTP 통신 결과를 보존하지 않는다.
    • State(상태) + less(없음)
    • 예시)
      1. 로그인 요청 → 로그인 완료 응답
      2. 버튼 클릭 → 로그인 해주세요 응답
      3. 로그인했는데? 버튼 클릭 → 로그인 해주세요 응답
    • 통신할 때 마다 사전에 필요한 모든 정보를 담아서 요청을 보내야 한다.
      → 버튼 클릭했으니까 정보 보내줘 + 로그인 완료

구조

  • 요청, 응답 모두 메세지의 형식이다.

Request

  • Start Line
  • 요청의 첫번째 줄
  • HTTP method : 요청이 의도한 액션을 정의
    • Request target
    • 요청이 전송되는 목표 url
    • 예시) 회원가입 - /join
    • HTTP version
      • HTTP 버전
      • 아직 1.1을 제일 많이 사용한다.
        ⇒ GET / login HTTP/1.1
  • Headers
    • 요청의 메타데이터를 담고 있는 부분
    • {key : value}의 형태
    • 예시
      Headers : {
      	Host : www.google.com //리퀘스트가 갈 곳
      	User-Agent : chrome //클라이언트가 사용하는 브라우저
      	Content-Type : application/json //보내는 데이터 타입은 json
      	Content-length : 50 //데이터의 총 길이(50글자)
      }
  • Body
    • 요청의 실제 내용
    • 예시
      Body : {
      	"username" : "myname",
      	"password" : "password12"
      }
    • 요청 메소드에 따라 존재하지 않을 수도 있다.

Response

  • Status Line
    • 응답의 첫번째 줄 → 상태를 나타낸다(클라이언트에게 상태를 알려준다).
    • HTTP version : HTTP 버전
    • Status Code
      • 응답 상태 코드
      • 404 같은 코드
    • Status Text
      - 응답의 상태를 간략히 설명하는 텍스트
      ⇒ HTTP/1.1 404 Not Found
      ⇒ HTTP/1.1 200 SUCCESS
  • Headers
    • {key : value}의 형태
    • 예시
      Headers : {
      	Host : www.google.com 
      	User-Agent : chrome 
      	Content-Type : application/json 
      	Content-length : 50
      }
  • Body
    • 예시
      Body : {
      	"message " : "success",
      	"token " : "dk12mxlkn3lkna" //토큰을 갖고 있으면 계속 모든 데이터를 가지고 요청 안보내도 돼!
      }
    • 요청 메소드에 따라 존재하지 않을 수도 있다.

HTTP Request Methods

GET

  • 프론트가 데이터를 받아오기만 할 때 사용
  • 웹페이지에 접속해서 필요한 데이터를 불러올 때
  • 예시) 게시판에서 게시글 볼 때

POST

  • 데이터를 생성 또는 수정할 때 사용
  • Body에 담는 내용이 핵심이다.
  • 예시) 댓글이나 게시글 작성 / 개인정보 수정 등

DELETE

  • 서버에 저장된 특정 데이터를 삭제할 때 사용
    참고) PUT / PATCH : 수정할 때 사용

Status code

  • Success
    200 : OK
    201 : Created
  • Error
    • 잘못된 요청이 들어왔을 때
      400 : Bad Request
      401 : Unauthorized
      402 : Forbidden
      404 : Not Found
  • Server Error
    • 백엔드에서 잘못했을 때
      500 : Internal Server Error
profile
프론트엔드 개발자를 꿈꾸는 사람( •̀ ω •́ )✧

0개의 댓글