SOAP & REST API

  • 웹 API(Web Service)의 대표적인 두 방식
  • HTTP 프로토콜을 이용하여 클라이언트와 서버 간의 데이터 통신을 수행

SOAP (Simple Object Access Protocol)

  • 1990년대 후반에 개발된 웹서비스 프로토콜
  • REST 방식이 유행하기전의 데이터 교환 방식
  • SOAP와 XML을 사용하여 안전하게 데이터를 교환 But 복잡
  • 오래된 API의 경우 SOAP를 사용 (예: 공공데이터 포털 사이트)

    SOAP의 실패원인

    • WSDL(Web Service Description Language)를 사용하여 복잡하고 많은 규칙과 표준을 요구
    • XML 형식(텍스트기반)의 메시지를 사용하여 데이터양이 많고, 처리속도가 느림
    • RESTful API 에 비해 덜 유연함
    • 복잡한 에러 처리 메커니즘을 가짐 (REST는 상태 코드로 처리)

위와 같은 이유로 SOAP보다 RESTful API가 대세가 되었다

REST API

  • 정해진 스펙이 존재하지 않음
  • HTTP/HTTPS를 사용하여 원하는 데이터를 제공하는 방식에서 사용하는 구조
  • GET, POST, PUT, DELETE, OPTIONS 같은 다양한 전송방식을 사용

REST의 제약조건

  1. 인터페이스 일관성
  • 일관된 API규약을 기반으로, 외부에서 호출가능한 인터페이스를 제공
  • HTTP 표준 URI, Method(GET, POST 등), MIME 타입(JSON 등) 등을 통일
  1. 무상태(Stateless)
  • 호출한 클라이언트의 상태를 서버에 저장하지않음
  1. 캐시 처리 가능(Cacheable)
  • 응답에 캐시 가능 여부를 명시함 → 성능 향상 가능
  1. 계층화(Layered System)
  • 클라이언트는 중간 계층(프록시, 게이트웨이)을 인식하지 않음 (아키텍처의 유연성)

인터페이스 일관성의 4가지 요소

1. 자원의 식별

  • URI를 통해 자원을 고유하게 식별 가능한 주소가 존재해야함
  • URI = 자원의 위치, HTTP Method = 자원에 대한 행위
<!-- 1번 사용자 -->
/users/1
<!-- 123번 게시글 -->
/posts/123

2. 메시지를 통한 리소스의 조작 (Resource Manipulation through Representations)

  • 자원은 JSON/XML 등의 표현(Representation)으로 전달
  • 이를 통해 자원의 상태를 읽거나 수정 가능

    PUT /users/1
    <!-- JSON으로 전송 -->
    {"name": "KIM"}
    

3. 자기 서술적 메시지(Self-descriptive Messages)

  • 요청이나 응답 메시지 안에 필요한 정보(형식, 해석 방법 등)를 스스로 담고 있음
  • Content-Type, Authorization, Accept 등의 HTTP 헤더를 통해 어떤 요청인지 이해 가능

4. 애플리케이션 상태에 대한 하이퍼미디어 제약 (HATEOAS)

  • 응답 안에 다음 동작을 위한 링크(하이퍼미디어)를 포함시킴

    {
      "id": 1,
      "name": "홍길동",
      "_links": {
        "self": { "href": "/users/1" },
        "orders": { "href": "/users/1/orders" }
      }
    }
    
  • 클라이언트는 응답만 보고 다음 요청 URI를 유추하지 않고 그대로 사용

데이터 포맷

  • REST 방식은 네트워크상 데이터를 식별하고 사용하는 방식에대한 데이터 포맷에 제약이 없다
  • 데이터 포멧은 API 서버를 호출하는 클라이언트에서 많이 사용한다
  • 과거에는 XML을, 최근에는 JSON 포멧을 많이 사용한다

    XML

    • 데이터를 태그 기반으로 표현하는 문서 형식
    • JSON 방식에 비해 처리속도가 느리고 제약이 많음
    • 과거의 웹 서비스(WSDL 기반 SOAP)에서 많이 사용

    JSON

    • {},[]를 사용하여 구조화된 데이터를 생성하는 형식
    • 처리속도가 빠르고 다양한 환경에서 처리할 수 있는 API를 제공



비교

항목 SOAP REST
기반 프로토콜 아키텍처 스타일
데이터 포맷 XML 고정 JSON, XML, YAML 등
표준 엄격 (WSDL, Schema 필요) 유연 (HTTP 자체 기능 활용)
속도/성능 무겁고 느림 가볍고 빠름
주 사용처 기업 간 통신, 금융 웹, 모바일, 오픈 API

태그:

카테고리:

업데이트:

댓글남기기