如何使用 AWS HTTP API 創(chuàng)建 API 代理網(wǎng)關(guān)_第1頁(yè)
如何使用 AWS HTTP API 創(chuàng)建 API 代理網(wǎng)關(guān)_第2頁(yè)
如何使用 AWS HTTP API 創(chuàng)建 API 代理網(wǎng)關(guān)_第3頁(yè)
如何使用 AWS HTTP API 創(chuàng)建 API 代理網(wǎng)關(guān)_第4頁(yè)
如何使用 AWS HTTP API 創(chuàng)建 API 代理網(wǎng)關(guān)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

在當(dāng)今快節(jié)奏的世界中,各種服務(wù)和系統(tǒng)之間的無(wú)縫集成變得越來(lái)越重要。將這些服務(wù)整合在一起時(shí),安全性也同樣重要。因此,有意義地設(shè)計(jì)應(yīng)用程序至關(guān)重要,這樣可以最大程度地減少不同系統(tǒng)之間的摩擦。本文重點(diǎn)討論客戶端和其他后端服務(wù)之間的通信-無(wú)論是無(wú)服務(wù)器功能還是第三方API。無(wú)論您是開(kāi)發(fā)人員、架構(gòu)師還是技術(shù)愛(ài)好者,本教程都將為您提供建立強(qiáng)大且可擴(kuò)展的API網(wǎng)關(guān)的知識(shí)和技能,從而簡(jiǎn)化客戶端和后端服務(wù)之間的通信?;A(chǔ)知識(shí)的簡(jiǎn)要回顧在我們深入研究并了解AWSHTTPAPI簡(jiǎn)化API集成流程的潛力之前,讓我們快速回顧一下基本術(shù)語(yǔ)。很多人可能了解什么是API和代理網(wǎng)關(guān)。也就是說(shuō),當(dāng)我們深入研究這些概念并試圖理解本質(zhì)細(xì)節(jié)和差異時(shí),事情可能會(huì)變得有點(diǎn)令人生畏。API(應(yīng)用程序編程接口)是一種抽象,允許兩個(gè)程序相互通信。API可以是API服務(wù)提供商以包或端點(diǎn)的形式公開(kāi)的方法,通過(guò)該端點(diǎn)可以傳輸信息(RESTAPI)。代理網(wǎng)關(guān)是將傳入請(qǐng)求轉(zhuǎn)發(fā)到目標(biāo)URI的網(wǎng)關(guān),而常規(guī)網(wǎng)關(guān)在客戶端和服務(wù)器之間來(lái)回發(fā)送信息。代理網(wǎng)關(guān)也是屏蔽目標(biāo)URI和API密鑰的好方法,否則如果直接從前端(瀏覽器)進(jìn)行網(wǎng)絡(luò)調(diào)用,這些目標(biāo)URI和API密鑰就會(huì)暴露。HTTPAPI與RESTAPI——有什么區(qū)別?從技術(shù)上講,不存在“HTTPAPI”——這是AWS特有的。在AWS上創(chuàng)建API網(wǎng)關(guān)時(shí),您可以創(chuàng)建HTTPAPI或RESTAPI。兩者之間的區(qū)別在于后者在設(shè)計(jì)API時(shí)提供了更大的靈活性,例如每個(gè)客戶端的節(jié)流、請(qǐng)求驗(yàn)證、私有端點(diǎn)等。為什么選擇HTTPAPI而不是RESTAPI?如上所述,與HTTPAPI相比,RESTAPI提供了更多的靈活性和細(xì)粒度的配置來(lái)設(shè)置API。那么您為什么要使用HTTPAPI?其實(shí),這并不總是關(guān)于有很多選項(xiàng)可供選擇的靈活性——除非要求是具體的,否則這通常會(huì)在選擇正確的選項(xiàng)集時(shí)增加噪音。另一方面,HTTPAPI帶有有限的配置選項(xiàng),這有助于您以最少的決策構(gòu)建API。HTTPAPI的另一個(gè)優(yōu)點(diǎn)是,它允許您將JWT授權(quán)者添加到網(wǎng)關(guān),這是RESTAPI中不存在的。如果您在應(yīng)用程序中使用第三方身份驗(yàn)證系統(tǒng),則使用JWT授權(quán)程序來(lái)保護(hù)您的API端點(diǎn)是有意義的。最后,HTTPAPI比RESTAPI更便宜。看看顯著特征,您應(yīng)該選擇兩者中的哪一個(gè)完全取決于您的要求。但模糊地說(shuō),HTTPAPI對(duì)于小型、非業(yè)務(wù)關(guān)鍵型應(yīng)用程序來(lái)說(shuō)是一個(gè)不錯(cuò)的選擇。如何創(chuàng)建HTTP代理網(wǎng)關(guān)并與目標(biāo)URI集成是時(shí)候動(dòng)手了。導(dǎo)航到您的AWS控制臺(tái)并搜索“APIGateway”。在AWS控制臺(tái)找到API網(wǎng)關(guān)單擊“創(chuàng)建API”將向您顯示各種可用的API類(lèi)型。單擊HTTPAPI上的“構(gòu)建”。在HTTPAPI上選擇“構(gòu)建”輸入API名稱(chēng),然后單擊“審核并創(chuàng)建”?;蛘撸梢暂斎肫渌匦璧呐渲眯畔?,但暫時(shí)忽略它,因?yàn)槲覀儗⒃谙旅嬖敿?xì)介紹配置。創(chuàng)建安全代理網(wǎng)關(guān)分為3個(gè)部分:定義路線添加集成附加授權(quán)者讓我們更詳細(xì)地討論每一項(xiàng)。如何定義路線路由是與資源操作或目標(biāo)URI相對(duì)應(yīng)的路徑端點(diǎn)。通過(guò)在路由中定義路徑變量,可以將動(dòng)態(tài)值發(fā)送到路由。路徑變量是通過(guò)在路徑變量周?chē)砑踊ɡㄌ?hào)來(lái)定義的,如下所示:/getmusic/{track}。上面的路由中

{track}是可以用任何值替換的路徑變量。一條路線可以有任意數(shù)量的路徑變量。但是,重要的是要知道查詢(xún)參數(shù)不能添加到路由定義中。定義API代理網(wǎng)關(guān)的路由還要確保為定義的路線選擇適當(dāng)?shù)姆椒?。為了?jiǎn)單起見(jiàn),您可以考慮使用“GET”。如何添加集成這可能是創(chuàng)建代理網(wǎng)關(guān)中最重要的步驟。這里具有挑戰(zhàn)性的部分是在傳入和傳出請(qǐng)求之間創(chuàng)建動(dòng)態(tài)值的正確映射。令人驚訝的是,沒(méi)有任何教程、文檔或指南來(lái)解決這個(gè)問(wèn)題,所以我希望這會(huì)有所幫助。單擊新定義的路由的方法后,您可以在右側(cè)窗格中看到路由詳細(xì)信息。您可能會(huì)注意到該路線沒(méi)有附加任何集成。單擊“附加集成”,然后單擊“創(chuàng)建并附加集成”。創(chuàng)建并附加集成屏幕在集成類(lèi)型中,選擇“HTTPURI”,因?yàn)槲覀兊哪繕?biāo)是創(chuàng)建一個(gè)代理網(wǎng)關(guān),將請(qǐng)求轉(zhuǎn)發(fā)到目標(biāo)第三方API。從選項(xiàng)中選擇“HTTPURI”輸入您的目標(biāo)URI并選擇與傳入請(qǐng)求相同的方法,以便使用適當(dāng)?shù)姆椒ㄞD(zhuǎn)發(fā)請(qǐng)求。注意:在目標(biāo)URI中,您應(yīng)該僅添加API的域,而不是帶有查詢(xún)參數(shù)的整個(gè)路徑,因?yàn)檫@是我們將通過(guò)參數(shù)映射構(gòu)建的內(nèi)容。例如,假設(shè)我們想按曲目名稱(chēng)獲取曲目列表。在這種情況下,您的輸入端點(diǎn)可能是:/getmusic/{track}根據(jù)您使用的第三方API,目標(biāo)URI可能類(lèi)似于:/ws/1.1/track.search?q_track={track}我們的目標(biāo)是確保為track路徑變量發(fā)送的值正確替換為傳出請(qǐng)求的查詢(xún)參數(shù)中的實(shí)際值。奇怪的是,如果我們將目標(biāo)URI定義為:/ws/1.1/track.search?q_track={track},該{track}變量不會(huì)被實(shí)際值替換。相反,文本字符串{track}按查詢(xún)參數(shù)值的原樣發(fā)送,無(wú)論您請(qǐng)求什么,都會(huì)獲取相同的錯(cuò)誤結(jié)果集。為了避免這個(gè)陷阱,我們不在目標(biāo)URI中定義完整路徑。繼續(xù),添加API的域部分,這應(yīng)該考慮上面的示例。如您所見(jiàn),在集成詳細(xì)信息部分下方,有一個(gè)參數(shù)映射規(guī)則,目前為空。單擊“創(chuàng)建”開(kāi)始添加映射規(guī)則。接下來(lái),將映射類(lèi)型選擇為“所有傳入請(qǐng)求”,然后選擇“添加新映射”。為了創(chuàng)建映射規(guī)則,您需要了解以下三件事:應(yīng)該修改什么應(yīng)該如何修改修改后的值應(yīng)該是多少應(yīng)該修改什么?通常,所有API端點(diǎn)都會(huì)有一個(gè)以域部分為后綴的路徑,例如v1/,這在我們的代理網(wǎng)關(guān)端點(diǎn)中是多余的。所以我們想從覆蓋路徑開(kāi)始。該值是靜態(tài)類(lèi)型化以符合URI路徑的內(nèi)容。以上述API為例,其值應(yīng)為:/ws/1.1/track.searchURI的動(dòng)態(tài)部分是跟蹤值,它是一個(gè)查詢(xún)參數(shù)。接下來(lái),我們需要附加一個(gè)包含動(dòng)態(tài)值的查詢(xún)參數(shù)。為此,單擊“添加新映射”并選擇querystring.<querystring_name>要修改的參數(shù),然后選擇“附加”。在值輸入字段中,輸入$request.path.track傳入{track}請(qǐng)求中的路徑變量名稱(chēng)??偠灾?,您的映射規(guī)則現(xiàn)在應(yīng)該如下所示:參數(shù)映射規(guī)則單擊“創(chuàng)建”,現(xiàn)在您的API代理網(wǎng)關(guān)應(yīng)該可以使用了。耶!您可以通過(guò)將查詢(xún)字符串作為新映射附加到路徑來(lái)類(lèi)似地附加其他查詢(xún)參數(shù)。例如,API密鑰通常作為查詢(xún)參數(shù)發(fā)送。此外,還可以在傳出請(qǐng)求中發(fā)送標(biāo)頭和正文。如何附加授權(quán)人盡管在測(cè)試API網(wǎng)關(guān)時(shí)附加授權(quán)者不是強(qiáng)制性的,但絕對(duì)建議在生產(chǎn)中保護(hù)它們。如果您使用的是GoogleAuthenticator等第三方身份驗(yàn)證服務(wù)或類(lèi)似服務(wù),HTTPAPI網(wǎng)關(guān)提供了一種基于JWT令牌管理路由授權(quán)的簡(jiǎn)單方法。從左側(cè)菜單導(dǎo)航到“授權(quán)”頁(yè)面,然后單擊“創(chuàng)建并附加授權(quán)人”。默認(rèn)情況下,“授權(quán)者類(lèi)型”選擇為JWT。鍵入所需的輸入,例如名稱(chēng)、發(fā)行者URL和受眾。值和格式因您碰巧使用的身份驗(yàn)證服務(wù)而異。例如,Google身份驗(yàn)證的頒發(fā)者URL是/<project-id>??偨Y(jié)這篇文章的關(guān)鍵在于強(qiáng)調(diào)使用參數(shù)映射來(lái)構(gòu)建路徑,而不是直接在路由中定義它并期待奇跡發(fā)生。我注意到的一個(gè)缺

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論