RESTful API

2023. 5. 1. 08:37zerobase/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 설계시 주의 사항

  1. 슬래쉬(/)는 계층 관계를 나타낼 경우에만 사용한다.
  2. URI 마지막 문자로 슬래쉬를 포함하지 않는다.
  3. 하이픈(-)을 사용해 URI의 가독성을 높인다.
  4. URI에는 밑줄(_)은 사용하지 않는다.
  5. URI에는 카멜 케이스를 사용하지 않는다.(카멜보다는 하이픈을 지향)
  6. URI경로에는 소문자를 지향한다.
  7. URI경로에 파일확장자를 포함하지 않는다.
  8. 주로 명사를 사용한다.
  9. 행위(동사)는 포함하지 않는다.
  10. 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