Application Programming Interface의 줄임말
응용 프로그램에서 사용할 수 있도록 다른 응용 프로그램에서 제어할 수 있게 만든 인터페이스를 뜻함.
API를 사용하면 내부 구현 로직을 알지 못해도 정의되어 있는 기능을 쉽게 사용할 수 있음.
여기에서 인터페이스(Interface)는 어떤 장치 간 정보를 교환하기 위한 수단이나 방법을 의미함. Ex) 마우스, 키보드, 터치패드 등
서버와 데이터베이스에 대한 출입구 역할
애플리케이션과 기기가 원할하게 통신 가능하도록 한다.
모든 접속을 표준화한다.
private API : 내부 API, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행합니다. 따라서 제 3자에게 노출되지 않는다.
partner API : 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있다. 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용된다.
public API : 개방형 API로, 모두에게 공개된다. 누구나 제한 없이 API를 사용할 수 있는 게 특징
Representational State Transfer의 줄임말
자원 ( 데이터 )의 이름으로 구분하여 해당 자원의 상태를 교환하는 것을 의미한다.
REST는 서버와 클라이언트의 통신 방법 중 하나로 아키텍쳐에 가깝다.
HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고 HTTP Method를 통해 자원을 교환한다.
HTTP Method : Create, Read, Update, Delete ( CRUD )
Server - Client 구조 : 자원이 있는 쪽이 Server, 요청하는 쪽이 Client이며 Client와 Server는 독립적으로 분리되어 있어야 한다.
Stateless : 요청 간에 클라이언트 정보가 서버에 저장되지 않는다. 서버는 각각의 요청을 완전히 다른 요청으로 별개의 것으로 인식하고 처리한다.
Cacheable : HTTP 프로토콜을 그대로 사용하기 때문에 HTTP의 특징인 캐시 기능을 적용, 대량의 요청을 효율적으로 처리하기 위해 캐시를 사용한다.
계층화 ( Layered System ) : 클라이언트는 서버의 구성과 상관없이 REST API 서버로 요청, 서버는 다중 계층으로 구성될 수 있음. ( 로드밸런싱, 보안 요소, 캐시 등)
Code on Demand ( Optional ) : 요청을 받으면 서버에서 클라이언트로 코드 또는 스크립트(로직)을 전달하여 클라이언트 기능을 확장 ( Javascript 개념 쪽에서 자주 사용 )
인터페이스 일관성 ( Uniform Interface ) : 자원이 표준 형식으로 전송되기 위해 구성 요소간 통합 인터페이스를 제공, HTTP 프로토콜을 따르는 모든 플랫폼에서 사용 가능하게끔 설계한다.
HTTP 표준 프로토콜을 사용하는 모든 플랫폼에서 호환 가능
서버와 클라이언트의 역할을 명확하게 분리
여러 서비스 설계에서 생길 수 있는 문제 최소화
REST 아키텍쳐를 따르는 API를 뜻함.
일반적으로 REST 아키텍쳐를 구현하는 웹 서비스를 RESTful하다고 한다.
REST 기반으로 시스템을 분산하여 확장성과 재사용성을 높임
HTTP 표준을 따르고 있어 여러 프로그래밍 언어를 구현 가능하다.
웹 기반의 REST API를 설계할 경우에는 URI를 통하여 자원을 표현해야 함
자원에 대한 조작은 HTTP Method ( CRUD )를 통하여 표현해야 함
: URI에 행위가 들어가면 안됨, HEADER를 통해 CRUD를 표현하여 동작을 요청해야 함
메세지를 통한 자원 리소스 조작
: HEADER를 통한 content-type을 지정하여 데이터를 전달, 대표적인 형식으론 HTML, XML, JSON, TEXT가 있음
URI에는 소문자를 사용
Resource의 이름이나 URI가 길어질 경우 하이픈(-)을 통해 처리
언더바(_)는 사용하지 않음
파일 확장자를 표현하지 않음
Simple Object Access Protocol의 줄임말
그 자체로 프로토콜이며 보안이나 메세지 전송 등에 있어 엄격한 규약을 가짐.
성공/반복 실행 로직이 규정되어 있기 때문에 SOAP API를 통해서 통신할 때 처음부터 끝까지 신뢰성을 제공한다.
SOAP 표준에는 ACID 준수에 관한 사항이 있다.
ACID를 준수하기 때문에 데이터의 변형을 줄여주고, 데이터베이스와의 상호작용에 대해서 사전에 정확하게 정하기 때문에 데이터의 무결성을 지켜줌.
ACID( 원자성, 일관성, 고립성, 지속성 )는 데이터 일관성을 위한 다른 방식들보다도 더 보수적이기 때문에, 금융 정보 등의 민감한 데이터를 주고받을 때 일반적으로 많이 사용된다.
