RESTful API
2023. 5. 1. 08:37ㆍzerobase/CS
728x90
RESTful API란?
REST는 Representational State Transfer로 자원의 상태를 주고 받는 것을 의미 하고, API는 Application Programming Interface로 프로그램을 사용하는 방법을 의미한다. 거기에 -ful이 붙어 충분한, 가득한, 완전한의 의미를 갖추었다.
RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스다.
안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 이러한 정보 교환을 지원한다.
RESTful API의 이점?
확장성
- REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정을 할 수 있다.
- 무상태는 서버가 과거 클라이언트 요청 정보를 유지할 필요가 없기 때문에 서버 로드를 제거한다.
- 잘 관리된 캐싱은 일부 클라이언트- 서버 상호 작용을 부분적으로 또는 완전히 제거한다.
- 이러한 모든 기능은 성능을 저하시키는 통신 병목 현상을 일으키지 않으며 확장성을 지원한다.
유연성
- RESTful 웹 서비스는 완전한 클라이언트-서버 분리를 지원한다.
- 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단순화하고 분리한다.
- 서버 애플리케이션의 플랫폼 또는 기술 변경은 클라이언트 애플리케이션에 영향을 주지 않는다.
- 애플리케이션 함수를 계층화하는 기능은 유연성을 더욱 향상시킨다.
독립성
- REST API는 사용되는 기술과 독립적이다.
- API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있다.
- 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있다.
REST API 설계 규칙
Client-server 구조
- 클라이언트와 서버는 독립적이다.
- 클라이언트는 오직 URI의 리소스만 알아야 한다.
- 클라이언트와 서버의 인터페이스는 독립적으로 개발되거나 대체될 수 있게 유지해야 한다.
stateless
- REST는 따로 상태 정보를 저장, 관리하지 않는다. 즉, 세션/쿠키에 대한 정보를 관리하지 않고 단순히 들어오는 요청에 대해서 처리하기만 한다.
- 이로 인해, 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리할 필요가 없다.
caching
- REST는 HTTP라는 기존 웹 표준을 그대로 사용하기 때문에 웹에서 사용하는 기존의 인프라를 당연히 활용 가능하다.
- 따라서 HTTP가 가진 캐싱 기능을 사용 가능하다.
- HTTP 프로토콜 표준에는 Last-Modified태그, E-Tag를 이용해 캐싱 구현이 가능하다.
uniforn interface
- HTTP 표준만 맞는다면, URI로 지정한 리소스에 대한 동작을 동일되게 하고 어떠한 기술로도 가능한 인터페이스 스타일이어야 한다.
- 만약 REST API요청을 HTTP+JSON으로 정의했다면, 다른 언어 혹은 플랫폼에서도 사용 가능한 구조를 말한다.
self descriptiveness
- REST API 메세지만 보아도 어떤 것을 의미하는지 쉽게 이해할 수 있다는 표현 구조로 된 것을 의미한다.
hierarchical system
- REST 서버는 다중계층으로 구성될 수 있기 때문에 로드 밸런싱, 보안, 암호화 계층을 추가해 구조의 유연성을 둘 수 있다. 추가적으로 PROXY,게이트웨이와 같은 네트워크 기반의 중간 매체를 사용 가능하다.
URI 설계시 주의 사항
- 슬래쉬(/)는 계층 관계를 나타낼 경우에만 사용한다.
- URI 마지막 문자로 슬래쉬를 포함하지 않는다.
- 하이픈(-)을 사용해 URI의 가독성을 높인다.
- URI에는 밑줄(_)은 사용하지 않는다.
- URI에는 카멜 케이스를 사용하지 않는다.(카멜보다는 하이픈을 지향)
- URI경로에는 소문자를 지향한다.
- URI경로에 파일확장자를 포함하지 않는다.
- 주로 명사를 사용한다.
- 행위(동사)는 포함하지 않는다.
- URI에 작성되는 명사를 단수형보다는 복수형으로 작성한다.
RESTful API 인증방법?
RESTful 웹 서비스는 응답을 보내기 전에 먼저 요청을 인증해야 한다. 인증은 신원을 확인하는 프로세스이다.
기본 인증
- 기본 인증에서 클라이언트는 요청 헤더에 사용자 이름과 암호를 넣어 전송한다.
- 안전한 전송을 위해 이 페어를 64자의 세트로 변환하는 인코딩 기술은 base64로 인코딩한다.
전달자 인증
- 전달자인증이라는 용어는 토큰 전달자에 대한 액서스 제어를 제공하는 프로세스를 나타낸다.
- 일반적으로 전달자 토큰은 서버가 로그인 요청에 대한 응답으로 생성하는 암호화된 문자열이다.
- 클라이언트는 리소스에 액세스하기 위해 요청 헤더에 토큰을 넣어 전송한다.
API 키
- API 키는 REST API 인증을 위한 또 다른 옵션이다.
- 클라이언트는 리소스에 액세스하려고 할 때마다 고유한 API 키를 사용하여 본인을 검증한다.
- API 키의 경우 클라이언트가 이 키를 전송해야 해서 네트워크 도난에 취약하기 때문에 덜 안전하다.
OAuth
- OAuth는 모든 시스템에 대해 매우 안전한 로그인 액세스를 보장하기 위해 암호와 토큰을 결합한다.
- 서버는 먼저 암호를 요청한 다음 권한 부여 프로세스를 완료하기 위해 추가 토큰을 요청한다.
- 특정 범위와 수명으로 언제든지 토큰을 확인할 수 있다.
'zerobase > CS' 카테고리의 다른 글
HTTP와 HTTPS의 차이 (0) | 2023.04.29 |
---|---|
Cross Browsing(크로스 브라우징) (0) | 2023.03.30 |
운영체제(3) (0) | 2023.03.15 |
운영체제(2) (1) | 2023.03.15 |
운영체제(1) (0) | 2023.03.15 |