RESTful API란 무엇인가요?

RESTful API는 두 컴퓨터 시스템이 인터넷을 통한 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다. 대부분의 애플리케이션들은 다양한 기능을 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야 한다. 이런 통신 및 정보 교환을 위해 RESTful API를 사용하고, RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따른다.

 

API란 무엇인가요?

애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)는 다른 소프트웨어 시스템과 통신하기 위해 따르는 규칙을 정의한다. 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 생성한다. 웹 API는 클라이언트(사용자)와 웹 리소스(데이터, 정보) 사이의 게이트웨이라고 생각할 수 있다.

 

REST란 무엇인가요?

REST(Representational State Transfer)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다. REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다. 따라서 REST 기반 아키텍처를 사용하면 대규모의 고성능 통신을 안정적으로 지원할 수 있다. 또한 쉽게 구현하고 수정할 수 있고, 여러 플랫폼에서 사용할 수 있다.

 

  1. HTTP URL을 통해 자원(resource)을 명시하고,
  2. HTTP Method(GET, POST, PUT, DELETE 등)을 통해
  3. 해당 자원(URL)에 대한 CRUD(Create, Read, Update, Delete) Operation을 적용하는 것을 의미한다.

 

즉, REST는 웹에 존재하는 모든 자원(이미지, 동영상, DB정보 등)에 고유한 URL을 부여해 활용하는 방식이다.

 

REST 아키텍처 스타일에 따른 API를 REST API라고 하고,

REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다.

 

REST 구성

  • 자원(Resource) : URL
  • 행위(Verb) : HTTP Method
  • 표현(Representations)

 

REST 아키텍처 원칙

    1. 균일한 인터페이스 (uniform interface)

HTTP 표준에만 따른다면 웹 또는 모바일 플랫폼이나 언어, 기술에 상관없이 균일한 인터페이스로 사용할 수 있다.

URL로 지정한 리소스에 대해 조작이 가능하다.

 

    2. 무상태 (stateless)

작업을 위한 상태 정보를 따로 저장하고 관리하지 않는다. 세션이나 쿠키 정보를 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만 처리한다.

 

    3. 캐시 가능성 (cacheable)

서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원한다. RESTful 웹 서비스는 캐시 가능 또는 캐시 불가능으로 정의되는 API 응답을 사용하여 캐싱을 제어한다.

 

    4. 계층화 시스템 (layered system)

다층 계층으로 구성되어 있어 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상 유연성을 둘 수 있고, 프록시, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.

클라이언트는 클라이언트와 서버 사이의 다른 승인된 중개자에게 연결할 수 있다. 서버는 요청을 다른 서버에 전달할 수 있다. 보안, 비즈니스 로직 등 여러 서버에서 실행될 수 있도록 웹 서비스를 설계할 수 있다.

 

    5. 클라이언트-서버 구조 (client-server)

클라이언트와 서버는 역할을 분리하여 상호 의존성을 줄였다. 클라이언트는 사용자 인증, 상태 관리와 서버 리소스 요청을 책임지고, 서버는 API, 비즈니스 로직, 데이터 저장을 책임진다.

 

RESTful API 장점

    1. 확장성

REST API는 무상태, 캐시 등의 기능을 통해 클라이언트-서버 상호 작용을 최적화하고, 통신 병목 현상을 일으키지 않으면서 확장성을 지원한다.

 

    2. 유연성

REST API는 클라이언트-서버 분리를 지원한다. 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단순화하고 분리한다. 서버 애플리케이션을 변경해도 클라이언트 애플리케이션에 영향을 주지 않는다.

 

    3. 독립성

REST API는 클라이언트와 서버를 명확하게 분리한다. API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 작성할 수 있고, 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있다.

 

RESTful API 작동 방식

  1. 클라이언트가 서버에 요청한다. 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정한다.
  2. 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 있는지 확인한다.
  3. 서버가 요청을 수신하고 내부적으로 처리한다.
  4. 서버가 클라이언트에 응답(요청한 모든 정보)을 보낸다. 응답에는 요청이 성공했는지 여부도 포함된다.

 

RESTful API 인증 방법

  1. HTTP 인증: 기본 인증(사용자 이름과 암호), 전달자 인증(전달자 토큰)
  2. API 키
  3. OAuth: 암호와 토큰 결합

 

RESTful API 클라이언트 요청 포함 사항

  1. 고유 리소스 식별자: URL
  2. 메서드: GET, POST PUT, DELETE 등
  3. HTTP 헤더

 

HTTP 메서드

  • POST : 현재 리소스(Collection)보다 한 단계 아래의 리소스(Document) 생성
  • GET : 현재 리소스(Collection, Document)를 조회
  • PUT : 현재 리소스(Document)의 정보 수정 (해당 자원의 전체를 수정)
  • DELETE : 현재 리소스(Document)를 삭제
  • PATCH : 현재 리소스(Document)를 수정 (해당 자원의 일부를 수정)

 

RESTful API 서버 응답 포함 사항

  1. 상태 포시줄: 200, 201, 400, 404 등
  2. 메시지 본문: XML, JSON, RSS
  3. 헤더: 헤더 또는 메타데이터

 

응답 코드

  • 1xx : 전송 프로토콜 수준의 정보 교환
  • 2xx : 클라어인트 요청이 성공적으로 수행
  • 3xx : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함
  • 4xx : 클라이언트의 잘못된 요청
  • 5xx : 서버쪽 오류로 인한 상태코드

 

 

 

참고자료

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

https://meetup.nhncloud.com/posts/92

https://brainbackdoor.tistory.com/53

+ Recent posts