您想將您的應(yīng)用程序連接到Instagram以使用特定主題標(biāo)簽重新發(fā)布圖像,還是連接到 微博以便它可以自動創(chuàng)建帖子?或者,也許您想在您的網(wǎng)站上嵌入優(yōu)酷視頻?您可以使用應(yīng)用程序編程接口(API)完成所有這些以及更多事情。API,如微信 API、微博API和抖音 API,為不同的小程序相互“對話”提供了一種安全和標(biāo)準(zhǔn)化的方式。這意味著,一個應(yīng)用程序可以從另一個小程序中提取功能或數(shù)據(jù),并使用它來增強(qiáng)自己的功能或用戶體驗。但是應(yīng)用程序如何發(fā)出這些請求、處理它們并以對方理解的方式回答它們呢?這取決于API的構(gòu)建方式。讓成都小程序開發(fā)來看看下面兩種最常見的方法。
SOAP代表簡單對象訪問協(xié)議,是一種高度嚴(yán)格且安全的構(gòu)建API的方法,該API以XML格式對數(shù)據(jù)進(jìn)行編碼。REST代表Representational State Transfer,是一種更簡單、更靈活的構(gòu)建API的方法,可以傳輸各種格式的數(shù)據(jù),包括XML以及純文本、HTML和JSON。
SOAP是一個標(biāo)準(zhǔn)的通信協(xié)議系統(tǒng),它使用XML技術(shù)來定義一個廣泛的消息傳遞框架,該框架允許在分散的分布式環(huán)境中交換結(jié)構(gòu)化信息。換句話說,SOAP允許運行在不同操作系統(tǒng)上的應(yīng)用程序使用不同的技術(shù)和編程語言進(jìn)行通信。
客戶端可以使用SOAPAPI 從服務(wù)器創(chuàng)建、檢索、更新或刪除記錄,例如密碼、帳戶、潛在客戶和自定義對象。
另一方面,REST是一種架構(gòu)風(fēng)格,而不是一種協(xié)議。如上所述,它代表Representational State Transfer。這意味著,當(dāng)客戶端使用RESTAPI請求資源時,服務(wù)器會以標(biāo)準(zhǔn)化表示形式傳回資源的當(dāng)前狀態(tài)。換句話說,RESTAPI接收對資源的請求并以客戶端可以輕松解釋的格式返回有關(guān)該資源的所有相關(guān)信息。
除了請求資源之外,客戶端還可以使用RESTAPI通過HTTP方法在服務(wù)器上修改甚至添加新項目。
如需更深入的描述,請閱讀REST API:它們的工作原理和您需要了解的內(nèi)容。
現(xiàn)在我們已經(jīng)更好地了解了SOAP和RESTAPI 的作用,讓我們比較一下它們的安全措施和協(xié)議。
由于SOAP是一種消息傳遞協(xié)議,因此保護(hù)SOAPAPI主要集中在防止未經(jīng)授權(quán)訪問由SOAPAPI接收和發(fā)送的消息(以及這些消息中包含的用戶信息)。防止未授權(quán)訪問的主要防御措施是Web標(biāo)準(zhǔn)(WS)安全性,這是一組規(guī)范SOAP消息傳遞的機(jī)密性和身份驗證過程的原則。符合WS Security的措施包括密碼、XML加密和安全令牌,以及其他機(jī)制。
WS Security超越了傳統(tǒng)的Web安全機(jī)制,例如HTTPS,HTTPS僅在發(fā)出請求的客戶端與具有所請求數(shù)據(jù)的服務(wù)器或Web服務(wù)之間的傳輸過程中保護(hù)消息。另一方面,WS Security 在HTTPS連接之外保護(hù)消息,有時甚至在傳輸層之外。
它是如何做到這一點的呢?
SOAP消息要么包含保護(hù)它所需的信息,要么包含有關(guān)從何處獲取保護(hù)它所需的信息的信息。SOAP消息還包含與處理其標(biāo)頭中指定的消息級安全性的協(xié)議和過程相關(guān)的信息。這意味著當(dāng) Web 服務(wù)端點收到SOAP消息時,它會驗證標(biāo)頭中的安全信息以確保它沒有被篡改。這就是為什么SOAP被稱為具有“消息級安全性”的原因。
因為SOAP支持WS規(guī)范,如WS-Addressing、WS-Policy、WS-Security、WS-Federation、WS-ReliableMessaging、WS-Coordination、WS-AtomicTransaction和WS-RemotePortlets,SOAPAPI 非常適合內(nèi)部數(shù)據(jù)傳輸和其他敏感任務(wù)——但對于使用每個人都可以免費使用的公共網(wǎng)絡(luò)服務(wù)來說是不必要的,比如檢索天氣數(shù)據(jù)。我們將在后面的帖子中詳細(xì)討論何時使用SOAP與RESTAPI。
RESTAPI僅支持傳統(tǒng)的Web安全機(jī)制,例如HTTPS。這意味著當(dāng)應(yīng)用程序使用HTTPS從RESTAPI發(fā)送和檢索消息時,該消息僅針對HTTPS連接是安全的。這意味著,消息僅在客戶端和服務(wù)之間的傳輸過程中是安全的。這對于公共網(wǎng)絡(luò)服務(wù)來說很好,但對于更敏感的數(shù)據(jù)傳輸來說可能還不夠。
由于RESTAPI沒有SOAP所具有的內(nèi)置安全功能或擴(kuò)展,因此它們的安全性取決于API本身的設(shè)計。RESTAPI可以設(shè)計為具有特定的安全機(jī)制,以確保只有經(jīng)過身份驗證和授權(quán)的用戶才能訪問它們。常見的RESTAPI身份驗證方法有HTTP基本身份驗證、JSON Web令牌、OAuth和API密鑰。
RESTAPI還應(yīng)該有詳細(xì)的規(guī)范,并拒絕任何在其HTTP標(biāo)頭中沒有正確聲明的請求,例如,或以其他方式遵循其規(guī)范。這將有助于保護(hù)底層Web應(yīng)用程序免受格式錯誤和惡意輸入的影響,即使在客戶端獲得訪問權(quán)限之后也是如此。
讓我們比較一些對SOAPAPI和RESTAPI 的請求和響應(yīng)示例。下面的示例分別基于 QACompleteSOAPAPI和RESTAPI。QAComplete是SmartBear推出的綜合性小程序測試管理工具。
QACompleteSOAP請求是對Web服務(wù)端點URL發(fā)出的HTTP POST請求??蛻舳撕头?wù)器在 HTTP 請求和響應(yīng)的正文中以XML格式交換數(shù)據(jù)。
此SOAPAPI僅接受HTTP POST請求,但它也支持所有項目類型的幾種常見操作,包括添加、刪除、加載、LoadByCriteria和更新。您將看到這些操作,而不是HTTP動詞GET、PUT、PATCH和DELETE。
當(dāng)您決定在SOAP和REST之間構(gòu)建API時,一般的經(jīng)驗法則是:如果您想要標(biāo)準(zhǔn)化和增強(qiáng)的安全性,請使用SOAP。如果您想要靈活性和效率,請使用REST。
有關(guān)何時使用SOAP與REST的具體用例,請查看下表。
開發(fā)私有API,尤其適用于大型企業(yè):由于SOAP允許數(shù)據(jù)在分散、分布式環(huán)境中傳輸,并且具有許多Web 安全機(jī)制,因此非常適合企業(yè)解決方案。
使用有狀態(tài)操作:與對RESTAPI的調(diào)用不同,對SOAPAPI的調(diào)用是有狀態(tài)的,這意味著服務(wù)器存儲有關(guān)客戶端的信息并在一系列請求或操作鏈中使用該信息。雖然這需要更多的服務(wù)器資源和帶寬,但如果執(zhí)行重復(fù)性或鏈?zhǔn)饺蝿?wù)(如銀行轉(zhuǎn)賬),這一點很重要。
使用HTTP以外的底層傳輸協(xié)議:SOAP獨立于底層傳輸協(xié)議,因此您不必使用HTTP。相反,您可以使用SMTP(簡單郵件傳輸協(xié)議)或JMS(Java 消息服務(wù))或其他傳輸協(xié)議,具體取決于您的應(yīng)用程序。
開發(fā)公共API:RESTAPI被認(rèn)為比SOAPAPI更易于使用和采用,這使它們成為創(chuàng)建公共Web服務(wù)的理想選擇。REST 還缺少一些SOAP具有的內(nèi)置安全功能 — 但在處理公共數(shù)據(jù)和服務(wù)時它們不是必需的。
使用有限的服務(wù)器資源和帶寬:所有對RESTAPI的調(diào)用都必須是無狀態(tài)的,這意味著每個交互都是獨立的,因此每個請求和響應(yīng)都提供完成該交互所需的所有信息。由于服務(wù)器將每個請求都解釋為全新的,因此服務(wù)器不會存儲有關(guān)過去請求的信息。這大大減少了所需的服務(wù)器內(nèi)存量并提高了性能,因為服務(wù)器在滿足請求時不需要采取額外的操作或檢索過去的數(shù)據(jù)。此外,由于REST是無狀態(tài)的,因此可以緩存數(shù)據(jù),這也節(jié)省了服務(wù)器資源和帶寬。最后,RESTAPI可以使用不同的數(shù)據(jù)格式,例如比XML更輕量級的JSON。這使得它們比大多數(shù)SOAPAPI更快、更高效。
構(gòu)建移動應(yīng)用程序:由于REST輕量、高效、無狀態(tài)且可緩存,因此非常適合構(gòu)建移動應(yīng)用程序。
成都小程序開發(fā)構(gòu)建API沒有黃金法則。在構(gòu)建API時在SOAP還是REST之間做出選擇取決于多種因素,包括您使用的編程語言以及構(gòu)建它需要多少時間。
文章均為全美專業(yè)成都小程序開發(fā)公司,專注于成都小程序開發(fā)服務(wù)原創(chuàng),轉(zhuǎn)載請注明來自http://www.39247.cn/news/2461.html