WEB기본(URI, HTTP, REST)
URI & URL
URI(식별자) : Uniform Resource Identifier
- 인터넷에 있는 자원을 나타내는 유일한 주소.
- 인터넷 프로토콜에 항상 붙어다니며 인터넷에서 요구되는 기본 조건이다.
- 하위개념으로 URL과 URN(이름)을 갖고 있다.
- 자원의 식별자
URL(위치) : Uniform Resource Locator
- 네트워크 상에서 자원이 어디 있는지 알려주기 위한 규약.
- 웹 사이트 주소 뿐만 아니라 컴퓨터 네트워크 상의 자원을 모두 나타낼 수 있음.
- 자원의 위치를 나타냄.
URL : http://opentutorials.org:3000/main (식별자)
URI : http://opentutorials.org:3000/main?id=HTML&page=12 (자원의 위치)
HTTP(Hyper Text Transfer Protocol)
Server와 Client사이에 이루어지는 요청/응답 통신규약(Application Layer 프로토콜)
Client : 서버에 자원(HTML)을 요청(Request), GET,POST,DELETE,PUT방식으로 요청함.
Server : 클라이언트의 요청에 대한 응답(Response)을 하면 클라이언트의 web browser에서 HTML자원을 화면에 띄워줌.
HTTP Response Format
- 1xx : Informational
- 2xx : Successes
- 3xx : Redirection
- 4xx : Client Error
-
5xx : Server Error
- HTTP는 간단하다.
- HTTP는 확장 가능하다.
- HTTP는 Stateless하지만 HTTP쿠키는 상태를 저장하는 session을 만들도록 한다.
REST API
웹에서 HTTP 프로토콜의 우수성을 최대한 활용하도록 하는 아키텍처
- 인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 한다
- Stateless : 각 요청간 클라이언트의 컨텍스트가 서버에 저장되어서는 안됨.
- Cacheable : WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
- Layered System(계층화) : 클라이언트는 보통 대상 서버에 직접 연결되었는지 중간 서버를 통해 연결되었는지 알 수 없다. 중간 서버는 로드밸런싱(부하 분산) 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시킴.
- Code on demand (optional) - 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
- 클라이언트/서버 구조 : 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해준다.