개념 정리
공부하면서 중요하다고 생각한 개념을 정리했습니다.
REST가 뭘까
- HTTP를 잘 사용하기 위한 아키텍처 스타일
- REST는 URI와 HTTP 메소드를 사용해서 자원과 행위를 표현합니다.
- REST의 원칙을 지키면서 API의 의미를 표현하기 쉽고, 파악하기 쉽게 하는 것을 Restful 하다고 한다.
API
- Application Programming Interface
REST API
- REpresentational State Transfer
- 인터넷 상의 시스템 간 상호 운용성을 제공하는 방법 중 하나
- 인터넷 상의 시스템?
- client to client
- client to server
- server to server
- REST한 방식으로 데이터를 상호교환하게 설계된 API를 말한다.
- HTTP를 잘 사용하기 위해, URI와 HTTP메소드를 사용해서, URL로 어떤 자원에 접근할 것인지, 메소드로 어떤 행위를 할 것인지 표현하여 설계된 API를 말한다.
REST API의 필수 제약 조건들
- Clinet-Server
- client는 server에서 어떤 일을 수행하더라도 내부 작업은 알 필요가 없다.
- 클라이언트와 서버가 서로 독립적이라 별도의 진화가 가능함
- Stateless
- 클라이언트에서 서버로 각 요청에는 그 요청에 필요한 모든 정보가 포함되어야 한다.
- Cache
- 요청에 대한 응답 내의 데이터에 해당 요청은 캐시가 가능한지 불가능한지 명시해야 한다.
- 보통 HTTP Header에
cache-control
헤더를 이용한다.
- Uniform Interface
- Resource-Based
- Manipulation of resources through representations
- Self-Descriptive Message
- Hypermedia As The Engine of Application State
Reestful API
- REST하게 만든 API를 RESTful API라고 한다.
REST API 가이드
그런 REST API로 괜찮은가
Client 와 Server
- Client
- 웹브라우저는 웹서버로 접속하기 위한 터미널
- 서버에게 자료를 request 하고, 서버가 주는 response 를 제공받는다.
Web Server와 WAS의 차이
Web Server
- HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당
- 정적 켄텐츠를 제공하기도 하고 동적 컨텐츠 제공을 위한 요청을 WAS에 전달하기도 한다.
- 예로는 Apache Server, Nginx가 있다.
WAS(= Web Server + Web Container)
- Web Application Server
- DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
- 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container)라고도 불린다.
- 현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.
- 여러 개의 트랜잭션 관리 가능
- 업무를 처리하는 비즈니스 로직 수행
- 예로는 톰캣이 있다.
HTTP 프로토콜
- HTTP(Hypertext Transfer Protocol)는 TCP/IP 위에서 돌아가는 통신 프로토콜
- TCP(Transmission Control Protocol)
- 전송 제어 프로토콜로 어느 한쪽 노드에서 다른 한쪽 노드로 데이터를 보낼 수 있게 해준다.
- IP(Internet Protocol)
- 인터넷 규약 주소로 네트워크 상의 주소를 의미합니다
- 프로토콜이 왜 필요할까?
- 네트워크 상에서 노드 간의 통신에는 정해진 규격이 필요하기 때문.
HTTP 특징
- Connectionless
- 비연결성
- HTTP는 필요한 순간에만 네트워크를 이용해 클라이언트와 서버가 연결되고 데이터를 주고받는다는 의미
- Stateless
- 무상태
- 데이터를 주고받을 때 상태를 포함하지 않는다는 의미
- 데이터를 주고받을 때 상태를 포함하지 않는다는 건 지속적으로 발생하는 웹 통신의 요청과 응답을 매번 독립된 요청과 응답으로 판별한다는 말과 같다.
- 다르게 말하면 클라이언트와 서버는 수없이 많이 통신해도 서로를 모른다는 뜻
- 무상태는 항상 처음 보는 것처럼 데이터를 주고받을 수 있게 상태(식별 값)를 지니지 않는다는 의미