자바강의 - [8주차] Web 개론
Web 이란 무엇인가?
- W3 == WWW == World Wide Web 이란 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 정보 공간
Web의 기반
HTTP
- Hypertext Transfer Protocol
- 어플리케이션 컨트롤
URI
- Uniform Resoure Identifier
- 리소스 식별자
HTML
- Hyper Text Markup Language
- 하이퍼미디어 포맷
- 웹 브라우저에서 사용자가 알아보기 쉬운 형태로 표현됨
REST (Representational State Transfer)
- 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식
- 네트워크 아키텍처 원리의 모음 - 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반
REST 아키텍처에 적용되는 6가지 제한 조건
- 인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 함
- 무상태(Stateless) : 각 요청간 클라이언트의 콘텍스트가 서버에 저장되어서는 안됨
- 캐시 처리 가능(Cacheable) : WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 함
- 계층화(Layered System) : 서버와 클라이언트 사이에 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야 하며 이를 확장 할 수 있어야 함
- 클라이언트/서버 구조 : 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 함
- Code on Demand(Optional) : 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있음
REST 인터페이스의 원칙에 대한 가이드
- 자원의 식별
- URI의 사용등을 통해 요청 내에 기술된 개별 자원을 식별할 수 있으여 함
- 메시지를 통한 리소스의 조작
- 클라이언트가 어떤 자원을 지칭하는 메시지와 특정 메타데이터만 가지고 있다면 이것으로 서버 상의 해당 자원을 변경·삭제할 수 있는 충분한 정보를 가지고 있음
- 자기서술적 메시지
- HTTP 기반의 REST에서는 HTTP Method와 Header 정보, URI의 포함되는 정보로 표현할 수 있음
- 애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어
- REST API를 개발할 때 단순히 Client 요청에 대한 데이터만 응답 해주는 것이 아닌 관련된 리소스에 대한 Link 정보까지 같이 포함되어져야 함
URI 설계 패턴
- URI(Uniform Resource Identifier)
- 인터넷에서 특정 자원을 나타내는 주소 값
- 해당 값은 유일함 (응답은 달라질 수 있음)
- URL(Uniform Resource Locator)
- 인터넷 상에서의 자원, 특정 파일이 어디에 위치하는지 식별하는 주소
- URL은 URI의 하위 개념
URI 설계 원칙 (RFC-3986)
- 슬래시 구분자 (/)는 계층 관계를 나타내는 데 사용
- URI 마지막 문자로 (/)는 포함하지 않음
- 하이픈(-)은 URI 가독성을 높이는데 사용
- 밑줄(_)은 사용하지 않음
- URI 경로에는 소문자가 적합
- 파일 확장자는 URI에 포함하지 않음
- 프로그래밍 언어에 의존적인 확장자를 사용하지 않음
- 구현에 의존적인 경로를 사용하지 않음
- 세션 ID를 포함하지 않음
- 프로그래밍 언어의 Method명을 이용하지 않음
- 명사에 단수형 보다는 복수형을 사용해야 함
- 컨트롤러 이름으로는 동사나 동사구를 사용
- 경로 부분 중 변하는 부분은 유일한 값으로 대체
- CRUD 기능을 나타내는 것은 URI에 사용하지 않음
- URI Query Parameter 디자인
- URI 쿼리는 컬렉션의 결과를 페이지로 구분하여 나타내는데 사용
- API에 있어서 서브 도메인은 일관성 있게 사용해야 함
- 클라이언트 개발자 포탈 서브 도메인은 일관성 있게 만들어야 함
HTTP Protocol
- HTTP(HyperText Transfer Protocol)로 RFC 2616에서 규정된 Web에서 데이터를 주고 받는 프로토콜
- HTML, XML, JSON, Image, Voice, Video, Javascript, PDF 등 컴퓨터에서 다룰 수 있는 포맷을 모두 전송할 수 있음
- HTTP는 TCP를 기반으로 한 REST의 특징을 모두 구현하고 있는 Web기반의 프로토콜
- 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜
HTTP Status Code
- 응답의 상태를 나타내는 코드
- 1XX - 처리중 - 처리가 계속 되고 있는 상태, 클라이언트는 요청을 계속하거나 서버의 지시에 따라 재요청
- 2XX - 성공 - 요청의 성공
- 3XX - 리다이렉트 - 다른 리소스로 리다이렉트, 해당 코드를 받았을 때는 Response의 새로운 주소로 다시 요청
- 4XX - 클라이언트 에러 - 클라이언트의 요청에 에러가 있는 상태, 재전송 하여도 에러가 해결되지 않음
- 5XX - 서버 에러 - 서버 처리 중 에러가 발생한 상태, 재 전송시 에러가 해결되었을 수도 있음
참고자료
Java & SpringBoot로 시작하는 웹 프로그래밍 강의 : #패스트캠퍼스 #내일배움카드 #K디지털크레딧 #바이트디그리 #자바인강
댓글 영역