728x90

RESTful API

  • RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다. 
  • 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 이러한 정보 교환을 지원한다. 

REST

  • Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다. 
  • REST 아키텍처 스타일을 따르는 API를 REST API라고 한다. 
  • REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다.
    • RESTful API라는 용어는 일반적으로 RESTful 웹 API를 나타낸다. 하지만, REST API와 RESTful API라는 용어는 같은 의미로 사용할 수 있다.
  • REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있다. 
  • 쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용한다.

API

  • 애플리케이션 프로그래밍 인터페이스(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의
  • 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성
    • ex) 근무 시간 기록 애플리케이션은 직원의 전체 이름과 날짜 범위를 요청하는 API를 표시 → 이 정보가 수신되면 내부적으로 직원의 근무 시간 기록을 처리하고 해당 날짜 범위에서 근무한 시간을 반환
  • API는 클라이언트와 리소스 사이의 게이트웨이라고 생각할 수 있다.

클라이언트

  • 클라이언트는 서버로부터 서비스를 요청하는 컴퓨터 또는 애플리케이션  
    • 웹 브라우저, 모바일 앱, 데스크톱 프로그램 등
  • 클라이언트는 API를 사용하는 사람이거나 소프트웨어 시스템일 수 있다. 
    • 웹 브라우저는 웹 서버로부터 웹 페이지를 요청하는 클라이언트
    • 모바일 앱은 API 서버로부터 데이터를 요청하는 클라이언트
    • 데스크톱 프로그램은 파일 서버로부터 파일을 요청하는 클라이언트

리소스

  • 서버가 제공하는 서비스 또는 데이터
    • 다양한 애플리케이션이 클라이언트에게 제공하는 정보이다.
  • 리소스는 이미지, 동영상, 텍스트, 숫자 또는 모든 유형의 데이터일 수 있다. 
  • 클라이언트에 리소스를 제공하는 시스템을 서버라고도 함
  • 조직은 API를 사용하여 리소스를 공유하고 보안, 제어 및 인증을 유지하면서 웹 서비스를 제공한다.

RESTful API는 어떻게 작동하는지

  • RESTful API의 기본 기능은 인터넷 브라우징과 동일
  • 클라이언트는 리소스가 필요할 때 API를 사용하여 서버에 접속
  1. 클라이언트가 서버에 요청을 전송
    • 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정
  2. 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인
  3. 서버가 요청을 수신하고 내부적으로 처리
  4. 서버가 클라이언트에 응답을 반환
    • 응답에는 요청이 성공했는지 여부를 클라이언트에 알려주는 정보가 포함
    •  응답에는 클라이언트가 요청한 모든 정보도 포함

RESTful API 클라이언트 요청에는 무엇이 포함되어 있는 것

고유 리소스 식별자

  • 서버는 고유한 리소스 식별자로 각 리소스를 식별
  • REST 서비스의 경우 서버는 일반적으로 URL(Uniform Resource Locator)을 사용하여 리소스 식별을 수행
  •  URL은 리소스에 대한 경로를 지정. URL은 웹페이지를 방문하기 위해 브라우저에 입력하는 웹 사이트 주소와 유사하다.
  • URL은 요청 엔드포인트라고도 하며 클라이언트가 요구하는 사항을 서버에 명확하게 지정한다.

메서드

HTTP 메서드는 클라이언트가 서버에 요청할 때 사용하는 명령어이다.

 

4가지 일반적인 HTTP 메서드 :


GET : 리소스를 조회 / 서버는 리소스의 표현을 응답으로 반환 (예: 웹 페이지를 요청)

  • 클라이언트는 GET을 사용하여 서버의 지정된 URL에 있는 리소스에 액세스 한다.
  • GET 요청을 캐싱하고 RESTful API 요청에 파라미터를 넣어 전송하여 전송 전에 데이터를 필터링하도록 서버에 지시할 수 있다.

POST : 새로운 리소스를 생성 / 클라이언트는 요청 본문에 새 리소스의 데이터를 포함한다. (예: 회원 가입)

  • 클라이언트는 POST를 사용하여 서버에 데이터를 전송한다.
    • 요청과 함께 데이터 표현이 포함
  • 동일한 POST 요청을 여러 번 전송하면 동일한 리소스를 여러 번 생성하는 부작용이 있다.


PUT : 기존 리소스를 수정 / 클라이언트는 요청 본문에 수정된 리소스의 데이터를 포함 (예: 프로필 정보 변경)

  • 클라이언트는 PUT을 사용하여 서버의 기존 리소스를 업데이트
  • POST와 달리, RESTful 웹 서비스에서 동일한 PUT 요청을 여러 번 전송해도 결과는 동일


DELETE : 리소스를 삭제 / 서버는 요청된 리소스를 삭제한다. (예: 게시물 삭제)

  • 클라이언트는 DELETE 요청을 사용하여 리소스를 제거한다.
  • DELETE 요청은 서버 상태를 변경할 수 있다.
    • 사용자에게 적절한 인증이 없으면 요청은 실패한다.

HTTP 헤더

  • 요청 헤더는 클라이언트와 서버 간에 교환되는 메타데이터이다.
  • 서버 간의 통신을 제어하고 정보를 전달하는 데 사용
  • 요청 헤더는 요청 및 응답의 형식을 나타내고 요청 상태 등에 대한 정보를 제공한다.
    • 요청하는 리소스의 식별자 (예: URL)
    • 요청하는 리소스의 형식 (예: HTML, JSON)
    • 클라이언트가 지원하는 언어
    • 클라이언트 인증 정보
    • 쿠키

데이터

REST API 요청에는 POST, PUT 및 기타 HTTP 메서드가 성공적으로 작동하기 위한 데이터가 포함될 수 있다.

파라미터

RESTful API 요청에는 수행해야 할 작업에 대한 자세한 정보를 서버에 제공하는 파라미터가 포함될 수 있다.

 

파라미터 유형

URL 세부정보를 지정하는 경로 파라미터.
리소스에 대한 추가 정보를 요청하는 쿼리 파라미터.
클라이언트를 빠르게 인증하는 쿠키 파라미터.


RESTful API 인증

RESTful 서비스는 응답을 보내기 전에 먼저 요청을 인증해야 한다. 인증은 신원을 확인하는 프로세스다.

RESTful API에는 4가지의 일반적인 인증 방법이 있다.

 

API 키

  • API 키는 REST API 인증을 위한 또 다른 옵션
  • 서버는 고유하게 생성된 값을 최초 클라이언트에 할당
  • 클라이언트는 리소스에 액세스 하려고 할 때마다 고유한 API 키를 사용하여 본인을 검증
  • API 키의 경우 클라이언트가 이 키를 전송해야 해서 네트워크 도난에 취약하기 때문에 덜 안전

OAuth

  • OAuth는 모든 시스템에 대해 매우 안전한 로그인 액세스를 보장하기 위해 암호와 토큰을 결합한다.
  • 서버는 먼저 암호를 요청한 다음 권한 부여 프로세스를 완료하기 위해 추가 토큰을 요청
  • 특정 범위와 수명으로 언제든지 토큰을 확인할 수 있다.

HTTP 인증

HTTP는 REST API를 구현할 때 직접 사용할 수 있는 일부 인증 체계를 정의한다. 

  • 기본 인증

기본 인증에서 클라이언트는 요청 헤더에 사용자 이름과 암호를 넣어 전송한다. 안전한 전송을 위해 이 페어를 64자의 세트로 변환하는 인코딩 기술인 base64로 인코딩한다.

  • 전달자 인증

전달자(bearer) 인증이라는 용어는 토큰 전달자에 대한 액세스 제어를 제공하는 프로세스를 나타낸다. 일반적으로 전달자 토큰은 서버가 로그인 요청에 대한 응답으로 생성하는 암호화된 문자열이다. 클라이언트는 리소스에 액세스 하기 위해 요청 헤더에 토큰을 넣어 전송한다.

 

 

 

참고

https://aws.amazon.com/ko/what-is/restful-api/

 

RESTful API란 무엇인가요? - RESTful API 설명 - AWS

Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애

aws.amazon.com

 

+ Recent posts