<REST>
REST(Representational State Transfer)는 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 시작되었습니다 . 이 덕분에 REST 기반의 아키텍처를 사용해서 대규모 고성능 통신을 안정적으로 지원할 수 있습니다. 즉 API는 애플리케이션이나 서비스가 다른 애플리케이션이나 서비스 내의 리소스에 액세스 할 수 있도록 하는 메커니즘입니다.
<REST 아키텍처>
균일한 인터페이스 (Uniform Interface)
- 동일한 리소스에 대한 모든 API 요청은 요청의 출처에 관계없이 동일하게 표시되어야 합니다.
- 동일한 데이터는 하나의 URI (Uniform Resource Identifier)에만 속하도록 해야 합니다.
클라이언트-서버 분리 (Client-server based)
- REST API 설계에서 클라이언트 및 서버 애플리케이션은 서로 완전히 독립적이어야 합니다.
무상태 (Stateless)
- REST API는 무상태성이기 때문에 각 요청에는 처리에 필요한 모든 정보가 포함되어야 합니다. (서버 세션이 필요없음)
캐시 가능성 (Cacheability)
- 클라이언트나 서버 측에서 리소스를 캐시 할 수 있어야 합니다.
계층화된 시스템 아키텍처 (Layered System)
- 계층화된 시스템 아키텍처에서는 클라이언트가 클라이언트와 서버 사이의 권한이 부여된 중개자들과 연결할 수 있으며, 여전히 서버로부터 응답을 받을 수 있습니다. 서버 또한 다른 서버로 요청을 전달할 수 있습니다.
코드 온디맨드 (Code on Demand)
- REST API는 일반적으로 정적 리소스를 전송하지만 경우에 따라 응답에 실행 코드(예: Java 애플릿)가 포함될 수도 있습니다.
<REST API 장점>
확장성
- 클라이언트와 서버 간의 분리 덕분에 개발팀이 제품을 큰 어려움 없이 확장할 수 있습니다
유연성과 이식성
- REST 스타일 API는 요청 중 하나에서 데이터를 올바르게 전송해야 하기 때문에, 한 서버에서 다른 서버로의 마이그레이션을 수행할 수 있습니다.
독립성
- 클라이언트와 서버 간의 분리로 인해 프로토콜은 프로젝트 전반에 걸쳐 독립적으로 개발이 이루어지기 쉽게 만듭니다. REST API는 작업 구문과 플랫폼에 맞게 적응할 수 있습니다.
경량성
- REST API는 JSON, XML, HTML 등 여러 포맷을 지원하는 HTTP 표준을 활용하기 때문에 경량화되고 빠릅니다.
<REST API 단점>
복잡성
- RESTful API는 개발이 복잡할 수 있으며, 많은 기술적인 지식을 요구합니다. 리소스 설계, URI 구조, 캐싱 전략, 상태 관리 등이 개발 시 고려해야 할 복잡한 요소들입니다.
성능
- RESTful API의 성능은 제대로 최적화되었을 때만 개선될 수 있습니다.
버전 관리
- RESTful API에서는 버전 관리가 문제가 될 수 있으며, API의 변경이 API를 사용하는 기존 애플리케이션과의 호환성 문제를 일으킬 수 있습니다.
<RESTful API>
RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스입니다. 대부분의 비즈니스 애플리케이션은 다양한 태스크를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야 합니다. RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 정보 교환을 안전하고 효율적으로 지원합니다 .
<RESTful API 클라이언트 요청에 포함하는 내용들>
- Unique Resource Identifier (URI)
- HTTP 메서드 (GET, POST, PUT, DELETE)
- HTTP 헤더
<RESTful API 인증 방법>
- HTTP 인증 (HTTP authentication)
- Basic authentication : 클라이언트가 유저 이름과 비번을 요청 헤더에 전송하고 64개의 캐릭터로 암호화하여 안전하게 변경합니다.
- Bearer authentication : 토큰 보유자에게 권한 주는 방식입니다. (로그인 요청)
- API 키
- 서버는 최초 접속하는 클라이언트에게 고유한 생성 값을 할당합니다. 클라이언트가 자원에 접근하려 할 때마다, 고유한 API 키를 사용해 자신을 인증합니다.
- OAuth
- OAuth는 비밀번호와 토큰을 결합하여 어떤 시스템에도 매우 안전한 로그인 액세스를 제공합니다. 서버는 먼저 비밀번호를 요청한 후, 추가적인 토큰을 요구하여 인증 과정을 완료합니다.
참고 자료 :
https://blog.postman.com/rest-api-examples/
https://www.ibm.com/kr-ko/topics/rest-apis
https://aws.amazon.com/what-is/restful-api/
https://medium.com/@mkuffo/key-advantages-and-disadvantages-of-building-restful-apis-469ae795ed9b
'웹 개발 (Frontend Developer) > 네트워크' 카테고리의 다른 글
Cookie vs Session (1) | 2024.09.30 |
---|---|
URL & URI & URN (1) | 2024.09.29 |
HTTP 버전별 차이점 (5) | 2024.09.26 |
HTTPS는? (3) | 2024.09.26 |
기본 HTTP에 대해 알아보기 (2) | 2024.09.26 |