API, REST(ful) API는 무엇인가?

hyeon·2024년 11월 12일

1. RESTful API란 무엇인가요?

RESTful API는 HTTP 요청을 사용하여 다양한 소프트웨어 애플리케이션 간의 상호 작용을 허용하는 인터페이스입니다. "RESTful"이라는 용어는 상호 작용 패턴을 구성하는 아키텍처 스타일인 REST(Representational State Transfer)에서 유래되었습니다. RESTful API에서 각 요청은 특정 리소스로 전달되며 응답은 일반적으로 리소스의 현재 상태를 나타냅니다.


2. API란 무엇입니까?

API(애플리케이션 프로그래밍 인터페이스)는 다양한 소프트웨어 애플리케이션이 통신할 수 있도록 하는 프로토콜 및 도구 세트입니다.

  • 클라이언트: 리소스 액세스를 요청하는 사용자 또는 시스템입니다.
  • 리소스: 리소스는 API가 제공하는 데이터 또는 기능이며 고유한 URI로 표시됩니다. 예를 들어 전자상거래 API의 리소스는 제품, 주문 또는 고객 프로필이 될 수 있습니다.

3. REST란 무엇입니까?

REST(Representational State Transfer)는 API 동작 조건을 정의하는 소프트웨어 아키텍처로 원래는 인터넷과 같은 복잡한 네트워크에서 통신을 관리하도록 설계됐다. 이는 안정적이고 확장 가능한 고성능 통신을 가능하게 하며 다양한 플랫폼에서 쉽게 구현, 수정 및 적응할 수 있습니다.

  • 균일한 인터페이스: 리소스와 상호 작용하는 방법이 여러 애플리케이션에서 일관되게 유지되도록 합니다.

    ⇒ 예를 들어, 서버는 데이터를 텍스트로 저장하되, HTML 표현 형식으로 전송할 수 있습니다.

  • 상태 비저장: 클라이언트의 각 요청에는 서버가 해당 요청을 이행하는 데 필요한 모든 정보가 포함되어야 합니다. 즉, 서버는 클라이언트 세션에 대한 어떤 상태도 저장하지 않습니다.

  • 계층화 시스템: 계층형 접근 방식을 사용하면 클라이언트가 여러 서버에 요청을 전달할 수 있는 인증된 중개자를 통해 상호 작용할 수 있습니다. 이러한 계층(보안, 애플리케이션, 비즈니스 로직)은 함께 작동하지만 클라이언트에게는 보이지 않아 확장성과 모듈성을 향상시킵니다.

  • 캐시 가능성: 응답을 캐시 가능으로 지정하여 클라이언트나 중개자가 특정 데이터를 일시적으로 저장할 수 있습니다. 이렇게 하면 중복 요청이 줄어들어 응답 시간과 서버 효율성이 향상됩니다.

  • 온디맨드 코드: 서버는 클라이언트 측에게 프로그래밍 코드를 전달하여 클라이언트의 기능을 동적으로 확장하거나 사용자 지정할 수 있습니다.


4. RESTful API 사용의 이점

RESTful API는 다음과 같은 몇 가지 장점을 제공합니다.

  • 확장성: 무상태 및 계층형 아키텍처로 인해 RESTful API는 확장성이 뛰어납니다.
  • 유연성: REST는 클라이언트와 서버를 분리하므로 개발자는 다른 쪽 끝에 영향을 주지 않고 한쪽 끝에서 변경할 수 있습니다.
  • 효율적인 성능: 캐시 기능을 통해 클라이언트는 응답을 저장하고 중복 요청을 줄여 로드 시간을 단축할 수 있습니다.
  • 상호 운용성: RESTful API는 다양한 유형의 애플리케이션(예: 웹, 모바일)과 원활하게 상호 작용할 수 있습니다.

5. RESTful API는 어떻게 작동하나요?

클라이언트가 요청하면 API는 이를 처리하고 JSON 또는 XML과 같은 형식으로 리소스 표현을 반환합니다. RESTful API는 주로 HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 리소스를 조작합니다. 각 요청은 URI를 대상으로 하며 HTTP 메서드를 기반으로 서버는 의도된 작업을 해석합니다.


6. RESTful API 클라이언트 요청의 구성 요소

RESTful API 클라이언트 요청에는 일반적으로 다음이 포함됩니다.

  • 고유 리소스 식별자(URI): 클라이언트가 상호 작용하려는 리소스를 식별합니다.
  • HTTP 방법: 다음과 같이 원하는 작업을 지정합니다.
  • GET: 리소스를 검색합니다.
  • POST: 새 리소스를 만듭니다.
  • PUT: 기존 리소스를 업데이트합니다.
  • DELETE: 리소스를 제거합니다.
  • HTTP 헤더: 콘텐츠 유형이나 인증 토큰과 같은 메타데이터를 포함합니다.
  • 데이터: POST 또는 PUT 요청의 경우 일반적으로 JSON 형식의 본문 콘텐츠입니다.
  • 매개변수: 응답을 필터링하거나 수정하기 위해 URI에 포함된 쿼리 매개변수입니다.

7. RESTful API 인증 방법

특히 민감한 데이터를 처리할 때 RESTful API를 보호하는 것이 중요합니다. 일반적인 인증 방법은 다음과 같습니다.

  • HTTP 인증: 클라이언트가 헤더에 자격 증명을 보내는 간단한 메커니즘입니다.
  • 기본 인증: 보안 수준은 높지 않지만 HTTP 헤더에 사용자 이름과 비밀번호를 인코딩합니다.
  • 전달자 인증: 자격 증명 대신 토큰을 사용하므로 상태 비저장 API에 이상적입니다.
  • API 키: 서버에서 생성되어 각 요청에 사용되는 고유 키입니다.
  • OAuth: 웹 애플리케이션에서 일반적으로 사용되는 자격 증명을 노출하지 않고 리소스에 대한 제한된 액세스를 허용하는 보다 안전한 방법입니다.

8. RESTful API 서버 응답 구성 요소

서버 응답에는 일반적으로 다음이 포함됩니다.

  • 상태 표시줄: 요청의 성공 또는 실패를 나타냅니다(예: 성공의 경우 200, 찾을 수 없는 경우 404).
  • 메시지 본문: 리소스 표현(일반적으로 JSON 또는 XML)입니다.
  • 헤더: 콘텐츠 유형, 캐싱 정책 등 응답에 대한 추가 메타데이터입니다.

9. AWS는 RESTful API 관리를 어떻게 지원합니까?

AWS는 RESTful API를 관리, 확장 및 보호하기 위한 여러 도구를 제공합니다.

  • Amazon API Gateway: API 생성, 게시, 관리를 지원하는 완전 관리형 서비스입니다. 트래픽 관리, 승인 및 모니터링을 처리합니다.
  • AWS Lambda: 전용 서버 없이 코드가 실행되는 서버리스 API 개발을 허용하여 비용 효율적이고 확장 가능합니다.
  • AWS IAM(ID 및 액세스 관리): 권한과 역할을 관리하여 API에 대한 안전한 액세스 제어를 제공합니다.
  • CloudWatch: 문제 해결 및 최적화에 필수적인 API 사용 및 성능을 모니터링하는 데 도움이 됩니다.

10. REST, REST API, RESTful API

  • REST: 웹에서 데이터를 전송하고 자원을 관리하는 방식에 대한 규칙을 정의한 것

  • REST API: REST원칙에 따른 API의 일반적인 호출 방법입니다.
    => 즉, REST의 디자인 규칙에 따라 데이터를 주고받도록 설계된 API로, HTTP 메서드(GET, POST,PUT, DELETE 등)와 URI를 사용해 자원에 접근하는 방식을 따르는 거죠.
    => 예를 들어, SNS에서 특정 사용자의 정보를 가져오거나, 게시글을 작성하고 수정할 때 REST API가 사용될 수 있어요.

  • RESTful API: 특히 “REST의 제약을 충실히 구현하고 있다"를 강조하는 표현입니다.

profile
당근🥕

0개의 댓글