WWW 란?
- W3 또는 웹(Web)
- 주요 요소 : HTML, URL, HTTP
- HTML : markup언어, hypertext 와 hyperlink(또는 링크) 로 구성
HTTP (HyperText Transfer Protocol)
Sever/Client 모델로 Requst/Response 사용
- Client에서 요청(Request)을 보내면, Server에서 응답(Response)을 준다.
- HTTP는 Connectionless 한 프로토콜 - 1회성 Request 및 Response
- TCP/IP socket을 이용해서 연결됨

HTTP 1.1
HTTP 1.1d은 keepalive 기능을 통해, 서버에서 설정된 keepalive timeout까지는 연결과정 없이 데이터 송수신 가능
- 내부적으로 결국 매번 TCP 3-way handshake 과정을 거칠 필요가 없어짐

주요 Request Method
GET : 정보 읽기(SELECT)
전달이 필요한 파라미터들은 URL을 통해 전달
- 웹사이트 접속시는 일반적으로 GET을 통해 HTML을 가져옴
POST : 정보 입력하기(INSERT)
전달이 필요한 파라미터들은 HTTP body에 포함되어 전달되므로, 사용자는 직접적인 확인 불가
PUT : 정보 수정하기(UPDATE)
DELETE : 정보 삭제하기(DELETE)
HTTP 응답코드
- 200 : 정상
- 400 : 유효하지 않은 파라미터 또는 잘못된 요청
- 401 : 승인되지 않은 엑세스
- 403 : 엑세스 금지
- 404 : 리소스를 찾을 수 없음
- 500 : 내부 서버 오류
쿠키(Cookie), 세션(Session)
HTTP의 Stateless 를 보완하기 위한 기법
Stateless : 통신이 끝나면 상태를 유지하지 않음
쿠키(Cookie)
- 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
- 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있음
- 클라이언트의 상태 정보를 로컬에 저장했다가 참조
구성 요소
- 이름 : 각각의 쿠키를 구별하는 데 사용되는 이름
- 값 : 쿠키의 이름과 관련된 값
- 유효시간 : 쿠키의 유지시간
- 도메인 : 쿠키를 전송할 도메인
- 경로 : 쿠키를 전송할 요청 경로
동작 방식
- 클라이언트가 페이지를 요청
- 서버에서 쿠키를 생성
- HTTP 헤더에 쿠키를 포함 시켜 응답
- 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음
- 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
- 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트하여 변경된 쿠키를 헤더에 포함
ex) 사이트 아이이 및 비밀번호 저장, 쇼핑몰 장바구니 기능
세션(Session)
- 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리
- 서버에서는 클라이언트를 구분하기 위해 세션ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때 까지 인증상태를 유지
- 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아지면 서버 메모리를 많이 차지하게됨
동작 방식
- 클라이언트가 서버에 접속 시 세션 ID를 발급 받음
- 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있음
- 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청
- 서버는 세션 ID를 전달 받아서 별다른 작업없이 세션 ID로 세션에 있는 클라이언트 정보를 가져와서 사용
- 정보를 가지고 서버 요청 처리하여 응답
REST(REpresentational State Tranfer)
- 자원(resource)의 표현(representaitonal)에 의한 상태 전달
- HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 CRUD 적용
CRUD Operation 와 HTTP Method
- CREATE : 생성(POST)
- READ : 조회(GET)
- UPDATE : 수정(PUT)
- DELETE : 삭제(DELETE)
REST 특징
- Server-Client(서버-클라이언트 구조)
- Stateless(무상태)
- Cacheable(캐리 처리 가능)
- Layerd System(계층화)
- Uniform Interface(인터페이스 일관성)
REST API
REST 기반으로 서비스 API를 구현한 것
마이크로 서비스, Open API 등에서 많이 사용됨
REST API의 특징
- 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
- REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
기본 규칙
- 도큐먼트 : 객체 인스턴스나 데이터베이스 레코드와 유사한 개념
- 컬렉션 : 서버에서 관리하는 디렉터리라는 리소스
- 스토어 : 클라이언트에서 관리하는 리소스 저장소
- URI는 정보의 자원으 표현해야 한다.
- 자원에 대한 행위는 HTTP Method로 표현한다.
RESTful
- RESTful은 일반적으로 REST라는 아키텍쳐를 구현하는 웹서비스를 나타내기 위해 사용되는 용어
- 'REST API'를 제공하는 웹 서비를 'RESTful'하다고 할 수 있음
- RESTful은 REST를 REST 답게 쓰기 위한 방법으로 비공식적이다.