URI vs. URL
URI
인터넷에 있는 자원을 나타내는 유일한 식별자
URL
주소이다.
흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다.
URI의 부분집합이다.
http://www.a.com/users/143
// 전체가 URI
// URL은 /users 까지
REST API
웹 서비스에서 클라이언트에 데이터와 기능의 집합을 전송하기 위해 제공되는 Web API가 REST 구조 스타일에 적합하게 설계된 경우 REST API라고 한다.
REST 구조 스타일은 웹 서비스 API 설계에 많이 적용되고 있다.
REST
로이 필팅이 웹 확장성의 주요 제약 조건들을 정리한 "웹의 구조적 스타일"에 대해 자신의 박사학위 논문에서 "REST (Representational State Transfer 표현 상태전이)" 라는 명칭으로 설명함
웹의 구조적 스타일
1. 클라이언트/서버 (Client/Server)
- 웹은 클라이언트/서버 기반 시스템으로 역할 구분
- 각각 언어 및 기술 독립적으로 구현 및 배포 가능
2. 균일한 인터페이스 (Uniform Interface)
- 인터페이스의 일관성에 기반하여 웹 컴포넌트들은 상호 운영됨
- 리소스 식별, 표현을 통한 리소스 처리, 자기 서술적 메시지( Self Descriptive Message) - 메타데이터 포함, 애플리케이션 상태 엔진으로서의 하이퍼 미디어 (HATEOAS)
- 메타데이터 등을 가지고 메시지만으로도 API와 구성요소에 대해 스스로를 설명할 수 있어야 함
- HTTP가 REST 제약조건을 거의 다 지원해주지만, "자기-서술적 메시지"와 "HATEOAS"가 잘 지켜지지 않음
3. 계층 시스템 (Layered System)
4. 캐시 (Cache)
5. 상태 없음 (Stateless)
6. 주문형 코드 (Code on demand - optional)
REST 구성 요소
자원, 행위, 표현으로 구성됨
1. 자원 (Resource)
- 모든 자원에 고유한 ID (URI)가 존재하고, 이 자원은 Server에 존재
- 자원을 구별하는 ID는 HTTP URI로 정의
- URI로 식별되는 자원의 정보(상태)를 조작하기 위해 Server에 요청
2. 행위 (Verb)
- URI에 대해 자원을 조작하기 위해 HTTP 프로토콜의 Method 사용
- HTTP 프로토콜은 GET, POST, PUT, DELETE와 같은 메서드 제공
3. 표현 (Representation of Resource)
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태로 표현됨
- 일반적으로 JSON, XML 포멧 활용
'Spring > Spring Boot' 카테고리의 다른 글
[Spring Boot for Web Development] 강의 내용 정리 (1) | 2023.07.31 |
---|---|
[Trouble Shooting] no ServletWebServerFactory bean defined in the context ... (0) | 2023.07.01 |
[Spring Boot] 토비의 스프링 부트 강의 - 독립 실행형 서블릿 애플리케이션 (0) | 2023.06.30 |