320x100
320x100

SOAP (Simple Object Access Protocol)

  • 다른 언어로 다른 플랫폼에서 빌드된 애플리케이션이 통신할 수 있도록 설계된 최초의 표준 프로토콜
  • 빌트인 프로토콜을 사용하여 페이지 로드 시간이 REST보다 걸림
    • 빌트인 프로토콜
      • 보안과 ACID가 포함된 프로토콜

SOAP의 구성

  • 웹 서비스 보안 (WS-security)
    • 토큰을 이용하여 메시지를 보호하고 전송
  • WS ReliableMEssaging
    • 불안정한 인프라로 전송되는 메시지 간 오류 표준화
  • 웹 서비스 주소 지정 (WS-addressing)
    • 심층 네트워크에 라우팅 정보를 유지관리 하는 대신, SOAP 헤더 내에 메타데이터로 해당 정보를 패키징
  • 웹 서비스 기술언어 (WSDL)
    • 웹 서비스가 무엇을 하는지 해당 서비스의 시작과 종료 위치를 기술

SOAP 메시지의 구조

  • <Envelope>
    • SOAP 메시지의 루트
    • 선택 요소인 <Header> 와 필수 요소인 <body> 포함
  • 메시지 경로를 따라 SOAP 노드가 처리할 응용 프로그램 관련 정보를 전달
  • SOAP에 기능을 추가할 수 있음
    • mustUnderstand (헤더 항목이 수신인이 처리해야하는 필수 항목 여부)
    • actor (헤더 항목을 특정 Endpoint로 지정)
    • encodingStyle (데이터 유형 정의)
    • 인증 / 결제 등의 SOAP 메시지에 대한 응용프로그램별 정보
  • <Body>
    • 메시지의 최종 수신인에 대한 정보를 포함하는 필수 하위 요소
    • 하위요소로는 네임스페이스
  • <Fault>
    • 오류를 보고하기 위한 body의 하위요소
    • Soap 1.2 = <code> / <reason> / <node> / <role> / <detail>
    • Soap 1.1 = <faultcode> / <faultstring> / <faultactor> / <detail>

SOAP request XML 예제

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPrice>
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

</soap:Envelope>

XML 태그에서의 콜론

XML 네임스페이스 적용 예제

<item-list xmlns:cdList="http://www.2mukee.com" xmlns:bookList="http://www.tistory.com">
    <cdList:rock>
        <title>CD ROM</title>
    </cdList:rock>
    <bookList:rock>
        <title>rock and roll</title>
        <price>5000</price>
    </bookList:rock>
</itemList>

기본적인 XML 예제

<?xml version="1.0" encoding="EUC-KR"?>
    <MEMBER_REGISTER>
        <TWOMUKKE_COMPANY>
            <NAME>이무기</NAME>
            <PHONE>010-1234-5678</PHONE>
            <DATE>2022-05-03 00:23:50.775<DATE>
            <COMMANT>안녕하세요? 고수가 되고 싶습니다.\n[이무기 드림]</COMMANT>
        </TWOMUKKE_COMPANY>
        <REGISTER_NUMBER>1</REGISTER_NUMBER>
    </MEMBER_REGISTER>

참고

300x250
728x90