使用API閘道器構建移動端友好的API服務
移動端API服務的特點
大多數的移動端app,和後端都採用基於HTTP的JSON資料通訊。相對於PC端,移動端的API服務最大的差異是網路環境。為了保證移動端的體驗,通常後端API服務會為移動端的每個場景,定製API合併資料返回,減少移動端的請求,提高移動端的體驗。
帶來的問題
對於後端開發人員而言,提供高度可複用的原子的API介面是最理想的狀態,但是對於移動端,就存在矛盾。
為了適應移動端的場景,後端API服務針對移動端的場景,定製API,在定製的API中合併資料結果。這樣做雖然解決了移動端的問題,但是對於後端而言,會做很多枯燥,無聊的工作,毫無成就感,並且隨著版本的迭代,會不停地去修改這些定製的門面API。
解決方案
對於這類情況,API 閘道器成為一個很好的解決方案。把服務聚合和定製的工作交給閘道器,後端提供原子類的API介面。筆者實現的Gateway的API閘道器正是這樣的解決方案。
使用Gateway
Gateway是使用Go實現的API閘道器,支援API服務聚合的功能。我們使用一個例子來看看Gateway如何幫助我們更好地構建移動端友好的API服務。
背景
首先我們有一個會員的後端API服務提供了2個API服務:
-
/api/user/base?userId=xxx
會員基本資訊介面
-
/api/users/{userId}/account
會員賬戶資訊介面
在APP的個人資訊頁面上要同時顯示這2類資訊
備註:這裡我為了演示Gateway的rewrite功能,上面的API介面URL設計並不好,有點亂。然而在現實情況下,這個2個介面有可能是兩個系統提供,完全可能出現這種情況。
方案
首先,我們需要定義一個符合Restful規範的API,然後這個URL在閘道器上需要給轉換成後端服務的2個API呼叫,並且合併結果返回。
建立2個Cluste
在gateway的admin管理系統上,建立2個Cluster,分別對應基本資訊查詢介面和賬戶資訊查詢介面後端server的叢集。
建立真實後端Server
在gateway的admin管理系統上分別建立對應2個介面實現的真實後端Server的資訊,其中最主要的資訊就是ip和port
繫結操作
把真實server繫結到對應的Cluster上。
建立聚合URL
在Admin系統上建立一個聚合URL為:^/api/users/(\d+)/info$,這個是一個正規表示式。然後在這個聚合URL上建立2個聚合呼叫:分別對應2個真實API的提供Cluster
-
/api/user/base?userId=$1
對應使用者基本資訊介面的後端叢集:cluster1,同時設定返回的資料在聚合json的attr屬性為:base
-
/api/users/$1/account
對應使用者賬戶資訊介面的後端叢集:cluster2,同時設定返回的資料在聚合json的attr屬性為:account
效果
這個時候,APP 向gateway 請求 /api/users/10000/info,gateway的會拆分應用請求,同時呼叫設定好的2個呼叫,並且聚合資料返回:{"base": {基本資訊返回的json}, "account": {賬戶資訊返回的json}},然後返回給APP
以上簡單介紹了API Gateway的作用,詳細的介紹可以在github上檢視Gateway專案
相關文章
- 探索使用Nginx +Lua 構建 API 閘道器NginxAPI
- 螞蟻金服mPaaS服務端核心元件體系概述:移動API閘道器MGS服務端元件API
- 螞蟻金服 mPaaS 服務端核心元件體系概述:移動 API 閘道器 MGS服務端元件API
- 高效能API閘道器(1)、微服務API閘道器架構設計API微服務架構
- 構建SpringCloud閘道器服務SpringGCCloud
- SpringCloud系列之API閘道器(Gateway)服務ZuulSpringGCCloudAPIGatewayZuul
- 微服務架構基礎之API閘道器微服務架構API
- Spring Cloud構建微服務架構-服務閘道器SpringCloud微服務架構
- API 閘道器 KongAPI
- Spring Cloud Zuul API服務閘道器之請求路由SpringCloudZuulAPI路由
- 【杭州活動】API 閘道器與高效能服務最佳實踐API
- 如何建設企業級API閘道器API
- .net core自定義高效能的Web API服務閘道器WebAPI
- Spring Cloud構建微服務架構—服務閘道器過濾器SpringCloud微服務架構過濾器
- api閘道器設計API
- 微服務設計中的API閘道器模式微服務API模式
- Ocelot整合Consul實現api閘道器與服務發現API
- Spring Cloud入門教程(五):API服務閘道器(Zuul) 上SpringCloudAPIZuul
- RestCloud API閘道器,輕量級ESB服務匯流排RESTCloudAPI
- 開放API閘道器實踐(一) ——設計一個API閘道器API
- 微服務實踐分享(2)api閘道器微服務API
- 微服務基礎——厲害了!API閘道器微服務API
- Zilla:一個事件驅動的API閘道器事件API
- 容器、服務網格和API閘道器:它始於邊緣API
- API 閘道器策略二三事API
- .NET Core 微服務—API閘道器(Ocelot) 教程 [四]微服務API
- .NET Core 微服務—API閘道器(Ocelot) 教程 [一]微服務API
- 全新一代API閘道器,帶視覺化管理,文件賊友好!API視覺化
- 使用API閘道器幫助單體到微服務的平滑過渡API微服務
- API閘道器,企業級閘道器可擴充套件API套件
- 使用Spring Boot和GraphQL構建靈活的API服務Spring BootAPI
- Api閘道器Kong整合Consul做服務發現及在Asp.Net Core中的使用APIASP.NET
- Spring Boot整合Zuul API閘道器Spring BootZuulAPI
- 企業API閘道器適用業務場景API
- [譯] 使用 Go 和 AWS Lambda 構建無服務 APIGoAPI
- 如何架構一個合適的企業API閘道器架構API
- go-kit微服務:一個簡單的API閘道器Go微服務API
- 【12月14日廣州活動】API 閘道器與高效能服務最佳實踐API
- [12月14日廣州活動] API 閘道器與高效能服務最佳實踐API