
API(Application Programming Interface)는 서로 다른 sw간에 상호작용을 가능하게 하는 인터페이스로, 특정 기능이나 데이터를 외부 애플리케이션에서 사용할 수 있도록 제공하는 규약이다.
웹 API는 API의 하위 개념으로, HTTP/HTTPS 프로토콜을 통해 웹 환경에서 클라이언트와 서버 간 상호작용을 가능하게 하는 인터페이스이다.
- 네트워크를 통해 데이터 요청 및 응답을 주고받는다.
- RESTful API, SOAP API 등 다양한 아키텍처 스타일로 구현이 가능하다.
- JSON, XML 등 웹 친화적인 데이터 포맷을 주로 사용한다.
<주요 특징>
1. XML 기반: XML 형식으로 작성되어 플랫폼 및 프로그래밍 언어에 독립적이다.
2. 다양한 프로토콜 지원: HTTP, HTTPS, SMTP, FTP 등 여러 네트워크 프로토콜을 통해 메시지를 전송할 수 있다.
3. 원격 프로시저 호출(RPC): 주로 RPC 방식으로 동작하여, 클라이언트가 마치 로컬에서 함수를 호출하듯이 원격 서버의 기능을 요청할 수 있다. 서버는 이 요청을 받아 처리 후, 결과를 XML형식으로 응답한다.
<장점>
1. 플랫폼 및 언어 독립적.
2. 방화벽과 프록시에 구애받지 않고 통신 가능.
3. 보안 표준(WS-Security)을 지원하여 높은 보안성을 제공
SOAP는 XML 기반의 표준화된 프로토콜이지만, 다음과 같은 복잡성 문제가 있다.
ex: 간단한 SOAP 요청
<soap:Envelope xmlns:soap="<http://schemas.xmlsoap.org/soap/envelope/>">
<soap:Body>
<AddNumbers xmlns="<http://example.org/Calculator>">
<a>10</a>
<b>20</b>
</AddNumbers>
</soap:Body>
</soap:Envelope>
Roy Fielding이 2000년에 제안한 REST(Representational State Transfer)는 웹의 기본 철학인 HTTP를 그대로 활용하면서도, 단순하고 직관적인 방식으로 리소스를 다룰 수 있게 해준 아키텍처 스타일이다.

SOAP 등의 복잡한 XML 기반 표준이 개발자에게 부담을 주던 상황에서, 웹이 가진 본래의 단순하고 확장성 높은 구조(URI, HTTP 메서드, 상태 코드 등)를 적극 활용하는 RESTful 방식이 더 빠르고 유연한 대안으로 주목받게 되었다.
<장점>
1. 간결한 메시지 구조: JSON 기반의 데이터 포맷은 가볍고 가독성이 높아 네트워크 효율성이 뛰어나다.
ex: 간단한 REST 요청
POST /add HTTP/1.1
Content-Type: application/json
{
"a": 10,
"b": 20
}
2, 웹 친화적 설계: HTTP 메서드(GET, POST, PUT, DELETE)를 그대로 사용하여 직관적이며 브라우저, curl, Postman 등 다양한 도구로 테스트 가능하다.
3. 확장성과 유연성: 클라이언트와 서버가 명확히 분리되어 있고, 다양한 플랫폼에서 쉽게 통신할 수 있다.
SOAP와 REST는 각 다른 특징과 장단점을 가진 통신 방식이다. 복잡하고 강력한 보안 및 트랜잭션 처리가 필요한 환경에서는 SOAP가 여전히 유용하며, 빠르고 간결한 데이터 교환이 필요한 현대 웹 서비스 환경에서는 REST가 더 널리 사용되고 있다.
무엇이 더 낫냐를 따지기보다는, 서비스의 특성과 요구사항에 따라 적절한 아키텍처 스타일을 선택하는 것이 더 중요하다.
<참고 자료>
https://f-lab.kr/insight/understanding-api-and-web-services
https://faun.pub/rest-vs-soap-9985a793acba
https://jelvix.com/blog/rest-vs-soap