-
1. HTTP란 무엇인가?
1.1 HyperText
- 정의 : 참조(하이퍼링크)를 통해 독자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트
1.2 Transfer
- HTML 문서를 다른 컴퓨터에 주고 받는데 그 때, 보내는 주체와 받는 주체가 있다.
1.3 Protocol
- 프로토콜은 협약, 통신 규약이라는 의미이다.
즉, HTTP는 컴퓨터끼리 어떻게 HTML 파일을 주고받을 지에 대한 통신 규약을 의미한다.
2. Stateless
- Stateless = state(상태) + less(없음)
즉, 각각의 HTTP 통신(요청/응답)은 독립적이기 때문에 과거의 통신(요청/응답)에 대한 내용을 전혀 알지 못 한다는 특징.
따라서, 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다.
3. Request / Response
3.1 Request의 구조
Start Line : HTTP Method / Request target / HTTP Version // ex) GET /login HTTP/1.1 // 해석: GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다! // HTTP Method : 해당 요청이 어떤 액션에 대한 요청인지 적혀있다. (GET, POST, DELETE, PATCH) // Request target : 요청의 target(uri)이 적혀있다. // HTTP version : 통신에 사용되는 HTTP버젼이 적혀있다. 주로 HTTP 1.1 버전이 사용된다. Headers: { Host: // 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다. (ex. https://www.apple.com) User-Agent: // 요청을 보내는 클라이언트의 브라우저에 대한 정보 (ex. chrome) Content-Type: // 해당 요청이 보내지는 메시지 Body의 타입(ex. application/json) Content-Length: // body 내용의 길이 Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 여기에 담는다. } Body: { // 해당 요청의 실제 내용입니다. 주로 Body를 사용하는 메소드는 POST 입니다. "user_email" : "wecode@gmail.com" "user_password": "wecode" }
3.2 Response의 구조
Status Line: HTTP Version / Status Code / Status Text ex) HTTP/1.1 404 Not Found # 해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청(ex. 로그인 시도)에 대해서 # 유저의 정보를 찾을 수 없기 때문에(Not Found) 404 상태 메세지를 보낸다. HTTP/1.1 200 SUCCESS # 해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 성공했기 때문에 # 200 상태 메세지를 보낸다. Headers: { // 요청의 헤더와 동일합니다. 응답의 추가 정보(메타 데이터)를 담고있는 부분입니다. Host: Server Header: Content-Type: Content-Length: Authorization: } Body: { // 요청의 메소드에 따라 Body가 항상 존재하지 않듯이 응답도 응답의 형태에 따라 데이터를 전송할 필요가 없는 경우엔 Body가 없을 수도 있습니다. "message": "SUCCESS" "token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
'Server > 기타' 카테고리의 다른 글
원티드 프리온보딩 : SW 아키텍쳐 - 2. Layered Architecture (0) 2023.03.11 원티드 프리온보딩 : SW 아키텍쳐 - 1. 도메인과 아키텍처 (0) 2023.03.10 Linux & Terminal (0) 2022.10.28 개발자도구 Element(요소) 패널 (0) 2022.10.23 컴퓨팅적 사고...? 컴퓨터처럼 생각하라는건가? (0) 2022.10.20