REST API

공부해야지 공부해야지만 몇 일째..
오늘마저 안하면 진짜 못할 것 같아서 글 적습니다.
API, 너는 뭐니?

API란 무엇인가요?

API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다. 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있습니다. 스마트폰의 날씨 앱은 API를 통해 이 시스템과 “대화”하고 휴대폰에 최신 날씨 정보를 표시합니다.

API는 무엇을 의미하나요?

API는 Application Programming Interface의 줄임말입니다.
API의 맥락에서 Application고유한 기능을 가진 모든 소프트웨어입니다.
Interface는 두 application 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청(Request)과 응답(Response)을 사용하여 두 application이 서로 통신하는 방법을 정의합니다.
API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다.

API는 어떻게 작동하나요?

API 아키텍처는 일반적으로 클라이언트서버 측면에서 설명됩니다. 요청을 보내는 애플리케이션을 클라이언트라고 하고, 응답을 보내는 애플리케이션을 서버라고 합니다. 위의 예시에서 기상청의 날씨 데이터베이스는 서버이고 모바일 앱은 클라이언트입니다.
API가 생성된 시기와 이유에 따라 API는 4가지 방식으로 작동할 수 있습니다.

  1. SOAP API
    • Simple Object Access Protocol API
    • 단순 객체 접근 프로토콜을 사용하며, 클라이언트와 서버는 XML을 사용하여 메시지를 교환합니다.
    • 과거에 많이 사용되었으며 유연성이 떨어지는 API입니다.
  2. RPC API
    • Remote Procedure Call API
    • 원격 프로시저 호출로, 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송합니다.
  3. Websocket API
    • JSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API 개발입니다.
    • 클라이언트 앱과 서버 간의 양방향 통신을 지원합니다.
    • 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 효율적입니다.
  4. REST API
    • REpresentational State Transfer API
    • 오늘날 웹에서 볼 수 있는, 가장 많이 사용되고 유연한 API입니다.
    • 클라이언트는 서버에 요청을 데이터로 전송합니다.
    • 서버는 이 클라이언트 입력을 사용하여 내부 함수를 시작하고, 출력 데이터를 클라이언트에 반환합니다.

웹 API란 무엇인가요?

웹 API 또는 웹 서비스 API는 웹 서버와 웹 브라우저 간의 애플리케이션 처리 인터페이스입니다. 모든 웹 서비스는 API이지만 모든 API가 웹 서비스는 아닙니다. REST API는 위에서 설명한 표준 아키텍처 스타일을 사용하는 특수한 유형의 웹 API입니다.

REST API란 무엇인가요?

REST는 클라이언트가 서버 데이터에 엑세스하는 데 사용할 수 있는 GET, PUT, DELETE 등의 함수 집합을 정의합니다. 클라이언트와 서버는 HTTP를 사용하여 데이터를 교환합니다.
REST API의 주된 특징은 무상태입니다. 무상태는 서버가 요청 간에 클라이언트 데이터를 저장하지 않음을 의미합니다. 서버에 대한 클라이언트 요청은 웹 사이트를 방문하기 위해 브라우저에 입력하는 URL과 유사합니다. 서버의 응답은 웹 페이지의 일반적인 그래픽 렌더링이 없는 일반 데이터입니다.

REST API를 사용하면 어떤 이점이 있나요?

  1. 통합 API는 새로은 애플리케이션을 기존 소프트웨어 시스템과 통합하는 데 사용됩니다. 그러면 각 기능을 처음부터 작성할 필요가 없기 때문에 개발 속도가 빨라집니다. API를 사용하여 기존 코드를 활용할 수 있습니다.
  2. 혁신 새로운 앱의 등장으로 전체 산업이 바뀔 수 있습니다. 기업은 신속하게 대응하고 혁신적인 서비스의 신속한 배포를 지원해야 합니다. 전체 코드를 다시 작성할 필요 없이 API 수준에서 변경하여 이를 수행할 수 있습니다.
  3. 확장 API는 기업이 다양한 플랫폼에서 고객의 요구 사항을 충족할 수 있는 고유한 기회를 제공합니다. 예를 들어 지도 API를 사용하면 웹 사이트, Android, iOS 등을 통해 지도 정보를 통합할 수 있습니다. 어느 기업이나 무료 또는 유로 API를 사용하여 내부 데이터베이스에 유사한 액세스 권한을 부여할 수 있습니다.
  4. 유지 관리의 용이성 API는 두 시스템 간의 게이트웨이 역할을 합니다. API가 영향을 받지 않도록 각 시스템은 내부적으로 변경해야 합니다. 이렇게 하면 한 시스템의 향후 코드 변경이 다른 시스템에 영향을 미치지 않습니다.

RESTful API

  • HTTP 프로토콜 기반(HTTP 1.1)
  • 리소스(자원)는 URI로 표현하며, 고유해야 한다.
  • URI는 단순하고 직관적인 구조여야 한다.
  • 처리 결과를 status code로 사용한다.
  • 리소스 상태는 HTTP Methods를 활용해 구분한다.
    • CRUD Operation
      1. POST : Create(추가/생성)
      2. GET : READ(조회)
      3. PUT : Update(수정)
      4. DELETE : Delete(삭제)
  • XML 또는 JSON을 활용해 데이터를 전송한다.
  • 동사보다는 복수 명사를 기준으로 사용하며, 하위 자원을 표현하기 위해 /를 사용한다.
      GET /users          : 모든 사용자의 정보를 가져온다.
      GET /users/{id}     : id 해당하는 사용자의 정보를 가져온다.
      POST /users         : 새로운 사용자를 추가한다.
      PUT /users/{id}     : id 해당하는 사용자 정보를 수정한다.
      DELETE /users/{id}  : id 해당하는사용자 정보를 삭제한다.
    

REST API의 특징

  • 무상태성(Stateless)
    • 클라이언트의 컨텍스트를 서버 쪽에 유지하지 않는다.
    • 각 API 서버는 들어오는 요청만 메시지로 처리한다.
  • 캐쉬 가능(Cacheable)
    • HTTP 프로토콜 표준에서 사용하는 ‘last-modified’ 태그나 ‘e-tag’ 태그를 사용하면 구현할 수 있다.
      • 클라이언트가 HTTP GET을 ‘last-modified’ 값과 함께 보냈을 때, 컨텐츠의 변화가 없으면 ‘304 not modified’를 반환하고 클라이언트는 자체 캐쉬에 저장된 값을 사용한다.
    • 네트워크 응답시간과 성능, 서버의 자원 사용률을 향상시킬 수 있다.
  • 클라이언트-서버 구조
    • 서버는 API를 제공하고 제공된 API를 이용해 비즈니스 로직 처리 및 저장을 책임진다.
    • 클라이언트는 사용자 인증이나 컨텍스트(세션/로그인) 등을 직접 관리하고 책임진다.

참고