CS

API란? (SOAP API, REST API)

🤖 Play with Android 🤖 2021. 10. 11. 16:54
728x90

 

 

📌  API란?

우리가 레스토랑에 있다고 가정해보자. 우리는 점원이 가져다준 메뉴판을 보면서 음식을 고르면, 점원이 주문을 받아 요리사에 요청을 한다. 그러면 요리사는 음식을 만들어 점원에게 주고, 우리는 점원이 가져다준 음식을 먹을 수 있게 된다.

여기서 점원의 역할을 한 번 살펴보자. 점원은 손님에게 메뉴를 알려주고, 주방에 주문받은 요리를 요청한다. 그다음 주방에서 완성된 요리를 손님께 다시 전달하게 된다. API는 점원과 같은 역할을 한다.

API는 고객(프로그램, 클라이언트)이 주문할 수 있게 메뉴(명령 목록)를 정리하고, 주문(명령)을 받으면 요리사(응용프로그램, 서버)와 상호작용하여 요청된 메뉴(명령에 대한 값)를 전달한다.

 

 

출처 : https://brunch.co.kr/@operator/65

 

 

 

 

 

📌  API의 역할

 

1. API는 서버와 데이터베이스에 대한 출입구 역할을 한다.
: 데이터베이스에는 정보들이 저장된다. 당연히 아무나 이 데이터베이스에 접근할 수 있으면 안된다. API는 이를 방지하기 위해 우리가 가진 서버와 데이터베이스에 대한 출입구 역할을 하며, 허용된 사람들에게만 접근성을 부여해주게 된다.

 

2. API는 애플리케이션과 기기가 원활하게 통신할 수 있도록 한다.
: 여기서 애플리케이션이란 우리가 흔히 알고 있는 스마트폰 어플이나 프로그램을 말한다. API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할을 하게 된다.

 

3. API는 모든 접속을 표준화한다.
API는 모든 접속을 표준화하기 때문에 기계, 운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있다. 쉽게 말해, API는 우리가 사용하는 220V 플러그처럼 범용 플러그처럼 작동한다고 볼 수 있다.

 

 

 

 

 

📌  API의 종류

 

프라이빗(Private)

API를 내부에서만 사용할 수 있도록 하며, 기업이 API를 최대한으로 제어할 수 있다.

 

파트너(Partner)

API를 특정 비즈니스 파트너와 공유하며, 품질 저하 없이 추가 수익원을 창출할 수 있다.

 

퍼블릭(Public) = 오픈(Open)

API가 모두에게 제공되며, 제 3자가 API와 상호 작용하는 애플리케이션을 개발할 수 있다.

YouTube, Naver, Kakao 등 여러 기업에서 퍼블릭 API(Open API)를 제공하고 있다.

 

 

 

 

 

❓ 왜 기업은 Open API 혹은 파트너 API를 제공할까?

일반 사용자 또는 파트너에게 API를 공개하면 다음과 같은 이점을 얻을 수 있다.

  • 새로운 수익 채널을 확보하거나 기존 수익 채널을 확장할 수 있다.
  • 브랜드 인지도를 확대할 수 있다.
  • 외부 개발을 활용하고 협업을 수행하여 오픈 혁신을 촉진하거나 효율성을 높일 수 있다.

 

 

 

 

 

📌  웹 API

웹 API는 일반적으로 요청 메시지에 HTTP를 사용하여 응답 메시지 구조의 정의를 제공한다. 이러한 응답 메시지는 일반적으로 XML 또는 JSON 파일의 형태이다. 다른 애플리케이션이 쉽게 조작할 수 있는 방식으로 데이터를 표시하므로 XML과 JSON 둘 다 자주 사용된다.

 

 

 

JSON이 많이 사용되는 경우

JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱 하므로, XML보다 더욱 빠른 처리 속도를 보여주게 된다. 따라서 HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹 환경에서 많이 사용되고 있다.

 

JSON 예제

{
    "name": "토토",
    "family": "푸들",
    "age": 10,
    "weight": 4
}

 

 

 

XML이 많이 사용되는 경우

JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야 한다.
따라서 데이터의 검증이 필요한 곳에서는 스키마를 사용하여 데이터의 무결성을 검증할 수 있는 XML이 아직도 많이 사용되고 있다.

 

XML예제

<dog>
    <name>토토</name>
    <family>푸들<family>
    <age>10</age>
    <weight>4</weight>
</dog>

 

 

 

 

 

 

 

 

📌  SOAP API & REST API

 

 

 

출처 : https://blog.iron.io/comparison-of-rest-vs-soap-api/

 

 

 

📗  SOAP API

 웹 API가 확산됨에 따라, 정보 교환을 표준화하기 위해 SOAP(Simple Object Access Protocol)라는 프로토콜 사양이 개발되었다.

SOAP(Simple Object Access Protocol)는 그 자체로 프로토콜이며, 보안이나 메시지 전송 등에 있어서 REST보다 더 많은 표준들이 정해져 있기 때문에 조금 더 복잡하다. 이러한 표준들로 인해서 오버헤드가 많기는 하지만, 보안, 트랜잭션, ACID(원자성, 일관성, 고립성, 지속성)을 준수해야 하는 보다 종합적인 기능이 필요한 조직에게는 적합한 방식이 될 수 있다.

 

 SOAP는 보안 수준이 엄격하다. SOAP에서는 SSL도 지원하고 WS-Security라는 자체 표준의 보안 기능도 가지고 있다. 따라서 은행용 모바일 앱처럼 보안 수준이 높아야 하거나, 신뢰할 수 있는 메시징 앱, 또는 ACID를 준수해야 하는 경우라면 SOAP 방식이 더욱 선호되는 경우가 있다.

 

 REST에서는 표준화된 메시징 시스템이 갖춰져 있지 않으며, 통신 장애가 있을 경우 재시도를 통해서만 조치할 수 있다. 반면 SOAP 표준에는 성공/반복 실행 로직이 규정되어 있기 때문에, SOAP API를 통해서 통신을 할 때 처음부터 끝까지 신뢰성을 제공한다.

 

 SOAP 표준에는 ACID 준수에 관한 사항이 있다. ACID를 준수하기 때문에 데이터의 변형을 줄여주고, 데이터베이스와의 상호작용에 대해서 사전에 정확하게 정하기 때문에 데이터의 무결성을 지켜주게 된다. ACID는 데이터 일관성을 위한 다른 방식들보다도 더 보수적이기 때문에, 금융 정보 등의 민감한 데이터를 주고받을 때 일반적으로 많이 사용된다.

 

 

 

 

 

 

 

📘  REST API

 REST(Representational State Transfer)는 네트워크를 통해서 컴퓨터들끼리 통신할 수 있게 해주는 아키텍처 스타일이다.

REST API는 인터넷 식별자(URI)와 HTTP 프로토콜을 기반으로 합니다. REST는 HTTP 프로토콜 덕분에 ‘단순함’이 핵심이라고 할 수 있는데, 데이터 포맷으로는 브라우저 간 호환성이 좋은 제이슨(JSON)을 사용한다. REST API는 구축과 확장이 간단하지만, 크고 복잡하게 만들 수도 있다. 이는 설계자가 API를 어떻게 만들고, 무엇을 추가하고, 어떤 목적으로 만들었는지에 따라 달려있다.

 REST API는 클라이언트와 서버 사이에서 통신할 수 있게 하고, 아키텍처를 만들 수 있게 해준다. REST 방식의 API라면, 클라이언트-서버 모델로 구축되었다는 것을 의미하며, 정보의 페이로드(실제 전달하려는 내용)가 두 지점 사이를 왕복하게 된다.

 

 REST API는 단일한 인터페이스를 사용한다. 이러한 점 때문에 해당 API를 사용하는 애플리케이션들이 동일한 경로를 통해서 접속해야 하고, 그 방식이 단순하다.

 

 REST는 웹에 최적화되어 있고, 데이터 포맷이 JSON이기 때문에 브라우저들 간에 호환성이 좋다. 또한, 그 성능과 확장성이 뛰어나다는 장점이 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Reference:

https://blog.iron.io/comparison-of-rest-vs-soap-api/

https://velog.io/@cil05265/XML%EA%B3%BC-JSON%EC%9D%98-%ED%8A%B9%EC%A7%95-%EA%B3%B5%ED%86%B5%EC%A0%90-%EC%B0%A8%EC%9D%B4%EC%A0%90

https://brunch.co.kr/@operator/65

http://blog.wishket.com/soap-api-vs-rest-api-%eb%91%90-%eb%b0%a9%ec%8b%9d%ec%9d%98-%ea%b0%80%ec%9e%a5-%ed%81%b0-%ec%b0%a8%ec%9d%b4%ec%a0%90%ec%9d%80/

http://blog.wishket.com/api%EB%9E%80-%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85-%EA%B7%B8%EB%A6%B0%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8/

https://steemit.com/kr/@yahweh87/it-api

http://tcpschool.com/json/json_intro_xml