HTTP(Hyper Text Transfer Protocol) : 웹 요청과 응답에 관한 클라이언트와 서버사이의 규약(약속)
특징
1) 비연결성 : 클라이언트의 요청에 대해 서버가 응답을 마치면 연결을 끊어버린다
-> 다음 요청은 새로운 연결을 통해 이루어짐
-> 단점 : 매번 모든 요청에 대해 새로운 연결/해제 과정을 거치므로 네트워크 비용측면에서 비효율적
-> 보완점 : HTTP/1.1 Keep-Alive 사용(서버와 클라이언트 사이 통신이 없어도 지정된 시간동안 연결을 유지하는 기능)
2) 무상태 : 하나의 요청이 진행되는 동안만 서로를 인지
-> 단점 : 클라이언트 인증(로그인)이 필요한 서비스에서 불편함
-> 보완책 : 쿠키, 세션, 토큰(Oauth, JWT) - 상태를 기억하기 위한 기능들
Http Status Code (응답 코드, 상태 코드) : 클라이언트의 요청에 대해 서버는 요청에 대한 처리 상태를 숫자 코드로 변환
ex) 200(요청 처리 제대로 했을때), 404(요청 페이지 찾을 수 없음)
-> 요청을 제대로 처리했을 뿐만 아니라 처리하지 못했을때도 코드 반환 해야 함
HTTP Method : 클라이언트가 요청을 보낼 때 해당 요청의 목적이 뭔지 HTTP 메소드를 통해 명시
ex) GET(Read-리소스 조회), POST(Create-리소스 생성), PUT(Update-리소스 수정), DELETE(DELETE-리소스 삭제)
웹 요청과 응답과정 :
URL 입력 -> 브라우저가 HTTP Request를 서버로 전송
-> 서버가 요청을 받고 처리(Request 헤더 + 클라이언트 정보 확인 후 로직 수행)
-> HTTP Response를 클라이언트에게 응답
-> 클라이언트(웹 브라우저)가 응답을 받은 후 필요한 리소스들을 추가 요청 & 응답 받기(CSS, JavaScript 등)
-> 브라우저가 렌더링 과정을 통해 리소스를 통합하여 화면에 뿌려줌