API(Application Programming Interface)


  • 구현 방식을 모르더라도 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
  • 내가 필요한 자원을 어디선가 제공하고 있다면, 우리는 그 자원을 가져온 후 다루는 방법만 알면 된다.
  • 자원을 주고받는 방법이 일관되어야 하며, REST API가 많이 쓰이고 있다.

REST


  • REpresentational State Transfer이라는 용어의 약자이다.
  • 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
    • 자원 : 해당 소프트웨어가 관리하는 모든 것. ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등
    • 자원의 표현 : 그 자원을 표현하기 위한 이름. ex) DB에서 책의 정보가 자원이라면 book을 자원의 표현으로 정한다.

특징

  • Server-Client : 자원이 있는 쪽이 Server, 요청하는 쪽이 Client이다.
  • Stateless : API 서버는 작업을 위한 상태정보를 따로 저장하고 관리하지 않는다.
  • Cacheable : 캐시 사용을 통해 응답시간이 빨라지고 REST Server 트랜잭션이 발생하지 않기 때문에 전체 응답시간, 성능, 서버의 자원 이용률을 향상시킬 수 있다.
  • Layered System : REST 서버는 다중 계층으로 구성될 수 있다. 보안, 로드 밸런싱, 암호화, 사용자 인증 등을 추가하여 유연성을 줄수 있고, PROXY, 게이트웨이 같은 에티워크 기반의 중간 매체를 사용할 수 있다.
  • Code-On-Demand(optional) : server로부터 스크립트를 받아서 Client에서 실행한다.
  • Uniform Interface : URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다. HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용 가능하다.

REST API


  • REST 기반으로 서비스 API를 구현한 것이다.
  • 구글 맵, 공공 데이터 등을 제공하는 업체 대부분은 REST API를 제공한다.
  • REST의 uniform interface를 지원하는 것은 쉽지 않기 때문에, 많은 서비스가 REST에서 바라는 것을 모두 지원하지 않고 API를 만든다.
profile
do for me

0개의 댓글