애플리케이션 간의 상호작용을 가능하게 해주는 인터페이스입니다. 즉, API는 서로 다른 소프트웨어들이 소통할 수 있도록 도와주는 중개인 역할을 합니다. 예를 들어, 우리가 스마트폰에서 날씨 애플리케이션을 사용할 때, 앱이 현재의 날씨 데이터를 보여주기 위해 날씨 서버에 요청을 보내고 응답을 받는 과정에서 API가 중요한 역할을 합니다.
API는 개발자의 삶을 크게 개선해줍니다. 기존에 구현된 서비스나 데이터를 다른 프로젝트에서 재사용하거나 타사의 기능을 가져와 빠르게 개발을 진행할 수 있기 때문입니다. 예를 들어, 결제 시스템을 구축할 때 자체적으로 모든 과정을 개발하는 대신, Stripe나 PayPal 같은 결제 서비스의 API를 사용해 간편하게 통합할 수 있습니다. 이를 통해 개발자들은 기본적인 기능 구현에 많은 시간을 절약하고 서비스의 핵심 기능에 집중할 수 있게 됩니다.
HTTP를 사용하여 프로그램끼리 소통하는 방식으로 Web API라고도 부른다. HTTP를 사용해서 서로 정해둔 스펙으로 데이터를 주고 받는 API를 말한다.
HTTP API와 REST API는 사실 거의 비슷하고 같은 의미로 사용하고 있다. 차이점으로는 REST API는 HTTP 프로토콜을 따르면서 4가지 제약 조건을 지켜야한다.
1. 자원의 식별
2. 메세지를 통한 리소스 조작
3. 자기서술적 메세지
4. 애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어(HATEOAS)
위 제약 조건을 지키며 개발하는 것을 RESTful API라고 한다.
실무에서는 이런 방법으로 개발하는 것이 어렵고 개발비용 대비 효과가 있지 않다고 한다. 이미 많은 사람들이 위 제약 조건들을 지키지 않아도 REST API라고 하기 때문에 HTTP API와 같은 의미로 사용하고 있다.
REST 제약 조건을 따르는 시스템을 RESTful이라는 용어로 지칭한다.
document, collection, store, controller 4가지 방식으로 자원을 표현한다.
http://restapi.example.com/sports/soccer/players/13
위와 같은 방식의 URI를 보면 sports, players는 collection으로 나타나고, soccer, 13은 document로 URI를 구성하고 있다.
그 외 리소스 표현 방법
GET /members/delete/1 (x)
DELETE /members/1 (o)
URI는 자원을 표현하는데 중점을 두어야 한다. URI에 HTTP Method가 들어가면 안되고 행위에 대한 표현도 들어가서는 안된다. 행위를 표현할 때는 HTTP Method로 표현한다.
GET /members/show/1 (x)
GET /members/1 (o)
회원정보를 가져오는 행위는 GET 메소드를 사용하여 URI를 표현한다.
GET /members/insert/2 (x)
POST /members/2 (o)
회원을 추가하는 행위는 POST 메소드를 사용하여 URI를 표현한다.
/company/employee (o)
/company/employee/ (x)
URL 마지막은 계층 관계가 아니기 때문에 슬래시로 구분하지 않습니다.
REST가 필요한 이유
RESTful API를 구현하는 목적
RESTful 하지 못한 경우 example
참고
https://bentist.tistory.com/37
https://coco16.tistory.com/10
https://velog.io/@beneficial/HTTP%EC%99%80-REST-API%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80