무엇을 다룰 것인가? → URI (URL)로 표현 이 때 URI는 명사형(복수)로 적는다
무엇을 할 것인가? → HTTP Method (GET, POST, PUT, PATCH, DELETE)
어떻게 주고받을 것인가? → JSON

무상태성)
서버가 클라이언트의 상태를 보존하지 않는다
(서버가 클라이언트의 이전 상태를 기억하지 않음)
비연결성)
TCP/IP의 경우 기본적으로 연결을 유지한다. 클라이언트가 요청을 보내지않아도 계속 연결을 유지해야한다.-> 연결하는데 서버 자원이 계속 소모된다
근데 HTTP의 경우에는 비연결성을 지닌다. 요청을 주고받을때만 연결을 유지하고, 응답을 주고나면 TCP/IP 연결을 끊는다.
따라서 최소한의 서버 자원을 사용한다
궁금증
3-Way Handshake를 하는데 왜 비연결성일까?
-> 계층(Layer)의 차이를 이해해야 한다.
3-Way Handshake (TCP / 4계층): 데이터를 안전하게 전송하기 위한 논리적(일시적) 연결 세션을 맺는 과정.
통신을 시작하자 하는 소프트웨어적 약속이다. 그래서 컴퓨터 전원이 꺼지면 통신이 불가능하다.
비연결성 (HTTP / 7계층): TCP가 만들어둔 통로를 이용해 요청을 보내고, 응답을 받으면 즉시 연결을 끊어버리는 속성.
HTTP의 본질은 Stateless에 있음.
서버가 수많은 클라이언트의 상태와 연결을 계속 유지하면 자원이 감당되지 않기 때문에, 요청/응답이 끝나면 연결을 바로 끊어버리는 비연결성 구조를 채택함.
예를들어 네이버 페이지를 띄워둔 상태에서 인터넷 선을 뽑아도 웹 브라우저 화면은 그대로 남아있음. 이미 요청/응답이 끝나고 HTTP 연결이 끊어진 상태에서 내 브라우저가 화면을 띄우고 있기 때문이다. 이것이 비연결성
put은 덮어쓰기다
기존 리소스가 있는데 put으로 일부만 수정하려한다?
내가 요청보낼때 바디에있는걸로 덮어씌워버린다
=>세계적 규약
기존 리소스가 없는 경우에는? 새로운 리소스가 생성됨. 덮어씌워지는건데 그냥 올라가는거지
patch로 일부수정이 가능해짐 age만 수정해서 patch요청 보내면 age부분만 수정되고 나머지는 다 그대로

안정성
get은 안전하지 조회만하고 저장된 데이터에 변화를 주지 않으니까
post delete put patch는 기존 데이터를 생성 수정 삭제하니가 안전하지않지
멱등성
멱등성의 뜻은 한번호출하나 수천번 호출하나 같은 성질을 가진다
get 은 같은 결과가 계속 조회된다.
put 수정해서 대최된 후 결과가 계쏙같고
delete 같은 요청여러번해도 삭제된 결과가 같다
하지만 POST는 멱등성을 보장하지않음
게시글 수백번쓰면 수백개 올라가겠지?
계좌 송금 수백번하면? 회원가입 수천번하면? 상태에 변화가 생기니까
내가 아는 웹 서버랑 뭐가 다른가?
웹 서버 (Web Server): 변하지 않는 정적 자원(HTML, CSS, 이미지 등)을 그대로 보여주는 서버
WAS (Web Application Server): 사용자 요청에 따라 매번 결과가 달라지는 동적 자원(DB 조회, 비즈니스 로직, 계산 등)을 처리하는 서버
그러니까 Web sever는 정적인 편이고 WAS는 동적이라고 할 수 있다
Spring에는 Tomcat이라는 WAS가 내장되어있다