[Web] REST
2024. 8. 6. 19:58ㆍ개발 지식/Basic
1. REST
'REST' 는 'REpresentational State Transfer(표현 상태 이전?)' 의 약자로 네트워크 소프트웨어 아키텍처이다. 인터넷과 복잡한 네트워크에서 통신 관리를 위한 지침으로 만들어졌다. REST 를 사용하면 대규모의 고성능 통신을 안정적이게 지원할 수 있다. 또한 쉽게 구현과 수정이 가능해 API 시스템을 쉽게 파악하고 다양한 플랫폼에서 사용할 수 있다는 장점을 가진다.
2. REST API
API 개발자는 다양한 아키텍처를 통해 API 를 설계하는데, REST 아키텍처 스타일을 따라 설계한 API 를 REST API 라고 한다. 간혹 RESTful API 란 용어를 확인할 수 있는데, 이는 일반적으로 RESTful Web API 를 말하는 것이다. 또한 많은 현업의 많은 개발자들이 REST API 와 RESTful API 를 같은 의미를 사용한다고 한다.
3. 제한 조건
- Uniform Interface : 균일한 인터페이스는 모든 RESTful 웹 서비스 디자인의 기본이다. 서버가 표준 형식으로 정보를 전송한다는 것을 나타낸다. 해당 조건에는 4가지 아키텍처 제약 조건이 존재한다.
- 요청은 리소스를 식별해야 하므로 균일한 리소스 식별자를 사용한다.
- 클라이언트의 경우 리소스를 수정, 삭제하기에 충분한 정보를 리로스 표현에서 가지고 있다. 서버의 경우 리소스를 자세히 설명하는 메타데이터를 전송해 해당 조건을 충족한다.
- 클라이언트는 형식이 지정된 리소스를 추가로 처리하는 방법에 대한 정보를 수신한다. 서버의 경우 클라이언트가 리소스를 적절하게 사용할 수 있는 방법에 대한 메타데이터가 포함된 명확한 메시지를 전송한다.
- 클라이언트는 작업 완료에 필요한 관련 리소스에 대한 정보를 수신한다. 서버의 경우 클라이언트가 더 많은 리소스를 동적으로 검색할 수 있게 형식이 지정된 리소스에 하이퍼링크를 넣어 전송한다.
- Stateless : 무상태라고 말하며 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트의 요청을 완료하는 통신 방법이다. 클라이언트는 임의의 순서로 리소스를 요청할 수 있으며, 모든 요청은 무상태이거나 다른 요청과 분리 된다. 즉, 서버가 매번 요청을 완전히 이해하고 이행할 수 있음을 뜻 한다.
- Layered System : 계층화 시스템, 클라이언트는 클라이언트-서버 사이의 또 다른 승인된 중개자에게 연결할 수 있다. 서버는 요청을 다른 서버로 전달할 수도 있으며, 클라이언트의 요청을 수행하기 위해 함께 작동하는 보안, 애플리케이션 및 비즈니스 로직과 같은 여러 계층을 여러 서버에서 실행될 수 있게 RESTful 웹 서비스를 설계할 수 있다.
- Cacheable : 캐시 가능성으로 서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에게 일부 응답을 저장하는 프로세스인 캐싱을 지원한다. 웹 사이트 방문시 서버는 해당 웹 페이지의 이미지를 캐싱 또는 저장하여, 이후에는 캐시에 직접 이미지를 사용한다. RESTful 웹 서비스의 경우 캐시 가능 또는 캐시 불가능으로 정의 되는 API 응답을 통해 캐싱을 제어한다.
- Client-Server model : 클라이언트-서버 구조를 통해 아키텍처를 단순화하고 작은 단위로 분리하여 각 파트가 독립적으로 개선될 수 있도록 한다.
- Code on demand(optional) : 온디맨드 코드, 서버는 소프트웨어 프로그래밍 코드를 클라이언트에 전송, 클라이언트 기능을 일시적으로 확장하거나 사용자 지정할 수 있다. 대표적인 예가 정보 오입력시 잘못된 입력이라 알려주는 것이다.
참고 문서
'개발 지식 > Basic' 카테고리의 다른 글
[DB] SQL (0) | 2024.08.13 |
---|---|
[Web] API (0) | 2024.08.06 |
[Web] REST API 란 무엇일까? (0) | 2024.08.06 |
[Web] TCP/IP (0) | 2024.08.02 |
[Web] Protocol (0) | 2024.08.02 |