API,REST, REST API, RESTful

박민규·2020년 9월 26일
1

javascript

목록 보기
8/8

😎API

Application Programming Interface

소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청,명령을 받을 수 있는 수단.

✅API의 역할

1. 서버와 데이터베이스(DB)의 출입구다.

DB에는 정보들이 담기는데 보안이 필요한 정보까지 누구나 접근하면 안되기 때문에
허용된 사람에게만 접근성을 부여해주는 출입구 역할을 하는게 API다.

2. 애플리케이션(App)과 기기(Device)가 서로 원활하게 통신을 가능하게 한다.
app = 스마트폰어플 or 프로그램들

3. 모든 접속을 표준화한다.
기계/ 운영체제 등과 상관없이 동일한 액세스를 얻을 수 있다.
API는 범용 플러그처럼 작동한다고 볼 수 있다.

✅API의 유형

1. private API

회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행합니다. 따라서 제 3자에게 노출되지 않는다. 내부 API.

2. public API

누구나 제한 없이 API를 사용할 수 있다. 개방형 API로, 모두에게 공개됨.

3. partner API

기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있다. 비즈니스 관계에서 사용되는 편이고 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용된다.

✅API 사용의 이점

Private API를 이용하면, 개발자들이 애플리케이션 코드를 작성하는 방법을 표준화함으로써, 간소화되고 빠른 프로세스 처리 가능. 또한, 소프트 웨어를 통합하고자 할 때 협업을 편하게 만들어 준다.

public API, partner API 를 사용하면, 기업은 타사 데이터를 활용하여 브랜드 인지도를 올릴 수 있고 고객 데이터베이스를 확장하여 전환율까지 높일 수 있다.


😎REST, REST API, RESTful

REST (Representational State Transfer)

REST의 정의

1. 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미

즉, 자원(Resource)의 표현(Representation)에 의한 상태 전달을 말한다. 자원은 해당 소프트웨워가 관리하는 모든 것(문서, 데이터, 소프트웨어 자체)을 말하고 상태(정보)란 데이터가 요청되는 시점에서 자원의 상태를 전달하는 것을 말한다. 여기서 데이터를 주고 받을 땐 일반적으로 JSON 또는 XML을 통해 주고 받는다.

2. 월드 와이드 웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨처 개발 아키텍처의 형식

REST는 기본적으로 웹의 기존 기술과 HTTP를 그대로 활용한다고 한다. 이 덕분에 장점을 최대한 활용할 수 있는 아키텍처 스타일이기도 하다. 또한 REST는 네트워크 상에서 클라이언트와 서버 사이의 통신 방식 중 하나다.

REST의 개념

HTTP URI를 통해 자원을 명시하고 , HTTP Method(post,get,put,delete)를 통해 해당자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

정말 이해하기 어려운 개념인데, 우선 정리하면 REST는 자원 기반의 구조 설계이며, 이 중심에 자원(Resource)가 있고 HTTP Method를 통해 자원을 처리하도록 설계되어 있다. 참고로 웹 사이트의 이미지, 텍스트, DB내용 등의 모든 자원에는 고유한 ID인 HTTP URI를 부여한다.

CRUD Operation

컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능들을 말한다.

  • Create: 생성(POST)

  • Read: 조회(GET)

  • Update: 수정(PUT)

  • Delete: 삭제(DELETE)

  • HEAD: header 정보 조회(HEAD)

REST의 특징과 장단점

REST는 자원, 행위, 표현 3가지 구성 요소로 이뤄져 있다.

자원(Resource): URI

  • 모든 자원엔 고유한 ID가 있으며 서버에 존재하며, 구별하는 ID는 HTTP URI다.
  • 클라이언트는 URI를 통해 자원을 지정하고 자원의 상태를 조작하기 위해 서버에 요청한다.

행위(Verb): HTTP Method

  • HTTP Method를 사용하며 GET, POST, PUT, DELETE와 같은 메서드를 제공한다.

표현(Representation)

  • 클라이언트가 요청한 것을 서버에서 응답하게 된다.
  • JSON, XML 등 여러 형태의 표현으로 나타내어 진다.(이외에도 TEXT, RSS 등이 있다.)

REST의 장점

  • HTTP 프로토콜의 인프라를 그대로 사용한다. 덕분에 REST API를 사용하기 위해 별도의 인프라 구축이 필요없다.

  • HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 호환되므로 범용성에서 뛰어나다.

  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.

  • 서버와 클라이언트의 역할이 명확하다.

REST의 단점

  • 표준이 없다.

  • 사용가능한 Method가 4가지 뿐이다.

  • 브라우저 버전에 따라 호환이 제각각이다.

ex) PUT, DELETE Method 사용 불가, pushState 미지원 등

REST는 왜 필요할까??

  • App의 분리 및 통합

  • 다양한 클라이언트의 등장

  • Android, iOS등 다양한 디바이스와 멀티 플랫폼에 대한 지원과 통신 방법이 필요해짐.

REST를 통해 서비스 자원에 대한 아키텍처를 구축하고 이용할 방법을 생각할 수 있게 됨.

REST API의 정의와 특징

  • REST를 기반으로 한 서비스 API

  • REST API는 REST 기반으로 시스템을 분산하여 확장성과 재사용성을 높여 유지보수와 운용을 편리하게 한다.

  • HTTP 표준을 기반으로 하므로, HTTP를 지원하는 프로그램 언어라면 클라이언트와 서버를 구현할 수 있다.

  • REST를 기반으로 API를 설계할 때 따르는 규칙들이 존재하며, 이 설계규칙덕분에 자료의 재사용과 유지보수가 용이하다.
    (설계 규칙에 대해선 이 포스팅에서 다루지 않는다.)

RESTful의 개념

REST라는 아키텍처를 구현하는 웹 서비스를 나타내기위해 사용되는 용어

이 문장도 적어놓고 참 이해하기 어렵고, 애매한 문장이라고 생각한다. 하지만, 다음에 언급하는 RESTful의 근본적인 목적을 보면 이해가 쉬울것이고, 개인적으로 이 근본적인 목적이 가장 중요한 개념이라고 생각한다.

RESTful의 목적은 이해하기 쉽고 쉬운 API를 만드는 것이다.

RESTful의 근본적인 목적은 성능 향상이 아니다. 일관적인 컨벤션을 통해 호환성을 높이는 것이 가장 큰 목적이다.

RESTful 하지 못한 경우??

CRUD 기능을 모두 POST로만 처리할 때

profile
개(발)초보

0개의 댓글