API와 REST API란? RESTful이란?

현정재·2024년 6월 16일
0

API(Application Programming Interface)

API는 소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용하기 위한 인터페이스를 제공하는 프로그래밍 기술입니다. API를 사용하면 다른 소프트웨어 구성 요소와 상호 작용하기 위해 필요한 복잡한 코드 작성을 줄일 수 있으며, 더욱 빠르고 효율적인 소프트웨어 개발을 가능하게 합니다. 또한 API는 데이터를 보호하고 보안을 유지하기 위한 방법으로도 사용할 수 있습니다.

REST(Representational State Transfer)

REST는 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용해 처리합니다. CRUD Operation은 다음을 의미합니다:

  • Create: 데이터 생성 (POST)
  • Read: 데이터 조회 (GET)
  • Update: 데이터 수정 (PUT, PATCH)
  • Delete: 데이터 삭제 (DELETE)

REST API

REST API는 웹 서비스 설계 아키텍처 중 하나로, 웹 기반 시스템 간의 상호작용을 단순화하고 확장 가능하게 만드는 방법을 말합니다. REST 기반으로 서비스 API를 구현한 것을 REST API라고 합니다.

REST API 설계 기본 규칙

  1. URI는 정보의 자원을 표현해야 함
    • resource는 동사보다는 명사를, 대문자보다는 소문자를 사용함
    • resource의 도큐먼트 이름으로는 단수 명사를 사용해야 함
    • resource의 컬렉션 이름으로는 복수 명사를 사용해야 함
    • resource의 스토어 이름으로는 복수 명사를 사용해야 함
  2. 자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현함
    • URI에 HTTP Method가 들어가면 안됨
    • URI에 행위에 대한 동사 표현이 들어가면 안됨 (즉, CRUD 기능을 나타내는 것은 URI에 사용하지 않음)
    • 경로 부분 중 변하는 부분은 유일한 값으로 대체함 (즉, :id는 하나의 특정 resource를 나타내는 고유값)

REST API 원칙

  • Stateless (무상태성): 각 요청은 서버가 클라이언트의 상태를 저장하지 않는 무상태 방식으로 처리됩니다. 모든 필요한 정보는 각 요청에 포함되어야 합니다.
  • Client-Server Architecture (클라이언트-서버 아키텍처): 클라이언트와 서버는 명확하게 분리되어 독립적으로 동작합니다. 클라이언트는 사용자 인터페이스를 관리하고, 서버는 데이터 저장 및 비즈니스 로직을 처리합니다.
  • Cacheable (캐시 가능성): 응답은 캐시될 수 있어야 하며, 캐시 가능 여부에 대한 정보가 명시적으로 제공되어야 합니다.
  • Layered System (계층화 시스템): 클라이언트는 직접 서버와 상호작용할 필요 없이 여러 계층을 통해 요청을 전달할 수 있습니다. 이러한 계층화는 보안, 로드 밸런싱, 캐싱 등을 쉽게 할 수 있게 합니다.
  • Uniform Interface (일관된 인터페이스): 모든 요청은 일관된 인터페이스를 통해 이루어져야 하며, 이를 통해 시스템의 독립적인 진화가 가능하게 합니다.
  • Code on Demand (선택적): 서버는 클라이언트가 실행할 수 있는 코드를 전송할 수 있습니다.

RESTful

RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어입니다. ‘REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있습니다. RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아닙니다. 즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭됩니다.

RESTful의 목적

이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것입니다. RESTful한 API를 구현하는 근본적인 목적은 성능 향상에 있는 것이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 동기입니다. 성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없습니다.

profile
wonttock

0개의 댓글