返回
Featured image of post SOAP & RESTful - 資料傳輸

SOAP & RESTful - 資料傳輸

SOAP & RESTful - Web Server 獲取資料的方式

在現在這個時代,很常看到 RESTful,SOAP是什麼肥皂洗香香嗎🤔?原來還有一種叫做 … RPC ㄡ …

SOAP (Simple Object Access Protocol) - 簡單物件存取協定

咱們維基百科敘述的:
此標準由IBM、Microsoft、UserLand和DevelopMentor在1998年共同提出,並得到IBM、蓮花(Lotus)、康柏(Compaq)等公司的支援,於2000年提交給全球資訊網聯盟(World Wide Web Consortium,W3C),目前SOAP 1.1版是業界共同的標準,屬於第二代的XML協定。

當初是為了解決不同語言簡易溝通使用比 RESRful 早一點時代的東西 。
現在不同語言的溝通方式其實也不只有 RESTful,像是現在最夯的gRPC也是可以溝通的協定。

RESTful (Representational state transfer) - 表現層狀態轉換

最常見就是 Web Server 咱們維基百科

  1. Uniform Interface:統一介面。
  2. Stateless:無狀態。
  3. Cacheable:可快取。
  4. Client-Server:客戶伺服器分離模式,任何一個客戶端與伺服器都是可替換的。
  5. Layered System:分層的系統,客戶端不知道他聯絡的是不是最終伺服器。
  6. Code on Demand(可選):伺服器可以將能力擴充到客戶端,如果客戶端可以執行的話。這個功能是可選擇的。

SOAP vs RESTful

SOAPRESTful
SOAP 是一種協議,RESTful是一種架構REST 可以利用 SOAP 作為 Web 服務的底層協議,因為它歸根結底只是一種架構模式。
XMLJSON
傳輸過程資源較大(格式問題)傳輸過程資源極小(格式問題)

如果我今天拿到一個 SOAP 或 Restful 要怎麼介接,這才是重點吧??要趕上線拉!

RESTful API

由於太常見了,我這邊想直接用文字代替過,很常在客戶端看到這個,不外乎就是用 AJAX 的方式傳送 JSON 與 Server 端口互動。
而且現在蠻常與廠商介接也是用 AJAX

NodeJS 推薦套件

  • axios - Client端 或 Server端都非常好用的套件
import axios from 'axios';
axios.post('/user', {firstName: 'Fred',lastName: 'Xu'})
  .then((response) => {console.log(response)})
  .catch((error) => {console.log(error)});

SOAP

NodeJS 推薦套件

  • soap
  • xml-js - 廠商可能是要包成 XML String 的時候要轉換使用。
import { Client, createClientAsync } from 'soap';
let client = await createClientAsync(this.url) // createClientAsync 可以建立非同步功能,我個人蠻推薦這種用法的
// SOAPFunction 這個真的是要從廠商那邊去查詢有什麼 Function 才能使用的,每一間廠商都不同
let response = await client.SOAPFunction({firstName: 'Fred',lastName: 'Xu'})

結語

介接方式百百種,遇到SOAP就上網爬爬文查查資料,因為我之前趕著做專案我也用過RESTful的方式用axios去自己組一個XML和廠商交握,結果也拿到資料了,我就以為SOAP是這樣的方式拿資料,結果根本被我亂搞搞通了,其實也是蠻鬧的,後來遇到比較完整的SOAP廠商,就低頭去找套件,爬爬文章這樣,越戰越勇!

comments powered by Disqus