麥克爾斯(深圳)科技服務(wù)有限公司 索紅升
近年來,電子商務(wù)行業(yè)不斷發(fā)展,行業(yè)競爭更為激烈,同時也有著十分龐大的數(shù)據(jù)信息和流量。所以相關(guān)企業(yè)也更加希望通過開放式的系統(tǒng)促進(jìn)和合作方之間的互利共贏,從而促使相關(guān)電商企業(yè)正在著手建立專業(yè)化的電商平臺開放式的API 系統(tǒng),為外界進(jìn)行多種多樣的服務(wù),從而獲取豐富的流量和用戶。本文結(jié)合電子商務(wù)平臺API 開放系統(tǒng)的設(shè)計方向、系統(tǒng)架構(gòu)、用戶授權(quán)、請求鑒權(quán)、頻率控制以及訂購關(guān)系這幾項主要功能,設(shè)計實現(xiàn)了優(yōu)質(zhì)的電子商務(wù)平臺API 開放系統(tǒng),希望能夠借此推動互聯(lián)網(wǎng)電子商務(wù)開放系統(tǒng)良性發(fā)展,推動現(xiàn)代化電商企業(yè)成長。
電商API 開放系統(tǒng)與其他開放平臺相比,具有明顯的電商特性,電商系統(tǒng)當(dāng)中的商品類型、數(shù)量眾多,用戶包括各種品牌商、賣家、商家、消費者等,用戶數(shù)量龐大,請求訪問異常頻繁,另外電商具有復(fù)雜的購物流程邏輯,一個訂單往往會包括多種不同狀態(tài),需要考慮許多問題??傮w來看,電商十分復(fù)雜,應(yīng)當(dāng)在對外開放的同時,在第三方開發(fā)者上屏蔽這些復(fù)雜的邏輯與流程,因此標(biāo)準(zhǔn)化與通用化是必然的發(fā)展方向,外界開發(fā)者只需要了解API 接口與相關(guān)的參數(shù)作用,調(diào)用接口能夠獲取所需信息即可,不再需要掌握電商內(nèi)部較為復(fù)雜的流程與邏輯。電商API 開放系統(tǒng)還屬于聯(lián)系內(nèi)外的橋梁,發(fā)揮著類似于中間件的作用,但這卻是一個較為完整的開放系統(tǒng)。內(nèi)部應(yīng)當(dāng)聚合電商業(yè)務(wù),外部應(yīng)當(dāng)為開發(fā)者屏蔽一些業(yè)務(wù)細(xì)節(jié),同時還能夠借助于開放系統(tǒng),促進(jìn)電商后臺的穩(wěn)定服務(wù),由于API 服務(wù)是否穩(wěn)定取決于電商后臺是否穩(wěn)定,因此在確保后臺十分穩(wěn)定、可靠的前提下,還需要不斷優(yōu)化后臺服務(wù)可靠并且較為穩(wěn)定的基礎(chǔ)上,應(yīng)當(dāng)要求后臺進(jìn)一步優(yōu)化服務(wù),提升運行效果。外部優(yōu)勢利用API 訪問基礎(chǔ)服務(wù),此時可能出現(xiàn)超時的情況,這樣的問題絕大部分情況下是由基礎(chǔ)服務(wù)引發(fā)的,這時就應(yīng)當(dāng)在API 側(cè)推動系統(tǒng)內(nèi)部改進(jìn),從而提高服務(wù)整體質(zhì)量水平。還應(yīng)當(dāng)提供內(nèi)部較為便利的在線文檔管理系統(tǒng),從而奠定系統(tǒng)進(jìn)一步優(yōu)化和開發(fā)的基礎(chǔ),對業(yè)務(wù)接口優(yōu)化與更新過程中的數(shù)據(jù)信息進(jìn)行詳細(xì)記錄[1]。
系統(tǒng)設(shè)計的整體目標(biāo)明確之后,可以針對如圖1 所示的系統(tǒng)構(gòu)架圖對本文設(shè)計實現(xiàn)的開放式API 系統(tǒng)架構(gòu)全方位的了解,途中展示的主要就是系統(tǒng)基礎(chǔ)功能與接口調(diào)用流程,與應(yīng)用的接入以及文檔在線測試和開發(fā)一類功能沒有任何關(guān)系,可以讓人們更好地了解系統(tǒng)內(nèi)部流程。在圖1 中,右側(cè)的調(diào)用人員主要為復(fù)雜開發(fā)的第三方App,用戶們?nèi)绻嗁彂?yīng)用,系統(tǒng)就會直接發(fā)送請求,通常需要利用Nhinx 轉(zhuǎn)發(fā)至系統(tǒng)當(dāng)中的服務(wù)器內(nèi)部,由于用戶數(shù)量較多,因此請求頻率會較大,通過轉(zhuǎn)發(fā)能夠提高系統(tǒng)內(nèi)部服務(wù)器的負(fù)載均衡度。利用單一的業(yè)務(wù)邏輯,在處理之后可以直接進(jìn)行鑒權(quán)與頻率監(jiān)測,同時針對相關(guān)用戶的請求發(fā)出是否正常進(jìn)行檢查,鑒權(quán)與頻率限制檢查主要就是在緩存當(dāng)中的數(shù)據(jù)信息進(jìn)行讀取,運用緩存主要就是為了進(jìn)一步提升檢查效率與鑒權(quán)性能,定期更新緩存內(nèi)容,如果出現(xiàn)崩潰,則能夠直接對其中數(shù)據(jù)進(jìn)行讀取,完成鑒權(quán)與頻率控制。通過鑒權(quán)與頻率,能夠借助于API 接口調(diào)取后臺業(yè)務(wù)接口,獲取相關(guān)信息,而后再將其反饋到調(diào)用方。
圖1 系統(tǒng)框架圖Fig.1 System framework
本開放系統(tǒng)采用開源技術(shù)框架的技術(shù)容易學(xué)習(xí),并且優(yōu)勢眾多,開發(fā)人員能夠在短期內(nèi)完成開發(fā),其開源技術(shù)也有著較為廣泛的應(yīng)用,能夠被業(yè)內(nèi)從業(yè)人員所接受,外部開發(fā)人員也更加熟悉系統(tǒng)架構(gòu),更方便系統(tǒng)的開發(fā)與應(yīng)用,滿足標(biāo)準(zhǔn)化與通用化的發(fā)展目標(biāo)[2]。
1.3.1 用戶授權(quán)訂購關(guān)系
用戶授權(quán)訂購關(guān)系在電商平臺API 開放系統(tǒng)當(dāng)中屬于一個基礎(chǔ),系統(tǒng)后續(xù)的相關(guān)功能都是服務(wù)于這種關(guān)系的,該功能的設(shè)計能否實現(xiàn),直接影響系統(tǒng)整體。用戶授權(quán)訂購過程的應(yīng)用,包括用戶、鑒權(quán)、登錄校驗以及授權(quán)入口等。電商開放系統(tǒng)當(dāng)中的用戶主要包括買賣雙方,第三方開發(fā)者所開發(fā)的各種應(yīng)用通常直接掛到電商平臺當(dāng)中,比如在用戶完成系統(tǒng)登錄之后,就會在管理界面中出現(xiàn)一個專屬于第三方的特定工具模塊,其主要用來對第三方軟件進(jìn)行展示。移動設(shè)備當(dāng)中大多會設(shè)置應(yīng)用商店,用戶們在商店內(nèi)可以從列表當(dāng)中挑選App,在某個用戶完成對某個App 的訂購之后,則應(yīng)用會針對用戶登錄情況進(jìn)行直接檢查,如果確認(rèn)沒有登錄,則需要用戶登錄,用戶登錄之后,應(yīng)用便會發(fā)送授權(quán)訂購這一請求,詢問用戶是否需要和應(yīng)用之間建立一個訂購關(guān)系。這時就要求電商登錄這一模塊檢查用戶的登錄狀態(tài),在開放系統(tǒng)當(dāng)中實現(xiàn)。確定所有用戶的正常登錄狀態(tài),在合法申請的基礎(chǔ)上,將用戶訂購關(guān)系記錄到數(shù)據(jù)庫當(dāng)中,同時針對訂購成功界面進(jìn)行實時反饋。在此期間,應(yīng)當(dāng)進(jìn)行嚴(yán)格的安全防護(hù),盡可能讓所有用戶都能夠更加便捷的訂購應(yīng)用,完成登錄的用戶則在進(jìn)行電極訂購并確定之后,便能夠快速訂購該應(yīng)用。
1.3.2 請求鑒權(quán)
在鑒權(quán)環(huán)節(jié)內(nèi),用戶首次授權(quán)應(yīng)用會建立訂購關(guān)系,同時也會獲取到訪問權(quán)限,最開始的流程類似于授權(quán)訂購流程,鑒權(quán)過程中會對用于訂購情況開展細(xì)致化檢查,如果發(fā)現(xiàn)訂購?fù)瓿?,則直接檢查訪問權(quán)限期限,如果依舊在期限內(nèi),則能夠請求該系統(tǒng)繼續(xù)保持運行;如果發(fā)現(xiàn)已過期,則可以為用戶直接自動續(xù)費,一些續(xù)期依舊為原理訪問Token,但是部分處于安全性可能重新出現(xiàn)多種訪問權(quán)限。用戶們一旦屬于首次對應(yīng)用進(jìn)行授權(quán),則鑒權(quán)應(yīng)當(dāng)針對該接口的具體訪問權(quán)限進(jìn)行直接調(diào)取。在獲取訪問權(quán)限的有效期之后,便會將其直接記錄在數(shù)據(jù)庫內(nèi),同時用戶們自動返回到訪問權(quán)限。而后用戶如果需要調(diào)用接口,則可以利用訪問權(quán)限獲取臨時權(quán)限,利用臨時權(quán)限生成具體的請求,對Sign 值進(jìn)行計算,借助于鑒權(quán)校驗獲取信息。鑒權(quán)訪問接入之后,還應(yīng)當(dāng)通過攔截器或過濾器完成檢查,這種功能通常是借助于Structs2 實現(xiàn),兩者都能夠通過文件的配置從而達(dá)到預(yù)期工作目的,過濾器則需要依賴于Serlet 容器,攔截器則需要利用Java 落實具體的反射機(jī)制。
1.3.3 訪問頻率控制
當(dāng)系統(tǒng)接收訪問請求后,首先請求會被攔截器攔截,并將其直接輸送至檢查服務(wù)內(nèi),首先將用戶換粗期間的頻率上限數(shù)值提取出來,這部分上限數(shù)值指的就是用戶們在上次訪問過程中的次數(shù)。得到這個上限值之后,需要進(jìn)行實時的更新,本質(zhì)上來說屬于上次和本次的兩個次數(shù)和,同時對緩存當(dāng)中的用戶限制進(jìn)行更新。該數(shù)據(jù)能夠直接落實到數(shù)據(jù)庫當(dāng)中,也能夠存儲在緩存當(dāng)中,因為其是一種中間數(shù)據(jù),所以在達(dá)到期限后就能夠直接歸零而后重新計算,在緩存期間也有可能出現(xiàn)丟失的問題,只需要進(jìn)行重新計算,將其他所有開銷全部落實就可以,因此能夠直接保留至緩存當(dāng)中。更新緩存的數(shù)據(jù)之后,將數(shù)值返回,而后用現(xiàn)階段的上限數(shù)值以及用戶訪問頻率都有著可以對比的受限數(shù)據(jù),同時更新對接口部位進(jìn)行請求的訪問次數(shù)。用戶大部分都存在同樣的受限數(shù)據(jù),所有的業(yè)務(wù)接口也擁有總訪問受限制。
用戶結(jié)束應(yīng)用訂購后,一般存在兩種差異化情況,首先是用戶屬于完成過登錄狀態(tài),此時該應(yīng)用將請求平臺檢查用戶以往的登錄狀態(tài),并在得到確認(rèn)之后,才需要用戶進(jìn)行確認(rèn)授權(quán),此時還需要結(jié)合權(quán)限請求用戶們的臨時權(quán)限,在獲取之后,才可以繼續(xù)調(diào)用業(yè)務(wù)接口,并從中得到用戶信息;其次是用戶屬于未登錄過的狀態(tài),這是就應(yīng)當(dāng)返回登錄開始界面,等待用戶完成授權(quán)與登錄,繼續(xù)后續(xù)的工作環(huán)節(jié)。這個過程就是利用UserAuth得以實現(xiàn),該類當(dāng)中應(yīng)用的主要包括應(yīng)用ID、應(yīng)用名稱、API 接口一類具體的參數(shù)信息,用戶們在對所訂購應(yīng)用進(jìn)行授權(quán)止嘔,主要的操作都是基于Web 網(wǎng)頁得以實現(xiàn),而其中的請求則屬于一種十分普遍的協(xié)議請求。在授權(quán)期間,具體流程是通過UserAuth 類內(nèi)部的Auth方法得以實現(xiàn)的。
請求鑒權(quán)主要有3 種,本文分析的就是用戶授權(quán)當(dāng)中的內(nèi)部鑒權(quán)這種功能。請求鑒權(quán)這個工作屬于利用攔截器得以實現(xiàn)的,在接入請求后,首先會受到攔截器直接攔截,完成檢查工作,在檢查結(jié)束后繼續(xù)完成后續(xù)操作。鑒權(quán)工作就是用作對操作的操作人員進(jìn)行驗證,其中涉及到的需要檢查的主要包括UID、AppID、Skey 以及權(quán)限一類參數(shù)信息,還有業(yè)務(wù)接口內(nèi)請求參數(shù),這些都可以利用計算Sign 數(shù)值進(jìn)行檢查。Sign 值計算過程中最為關(guān)鍵的一個步驟就是對參數(shù)進(jìn)行拼接,獲取原本的計算字符串,比如用戶們在調(diào)用接口完成發(fā)布信息的工作期間,商品參數(shù)就能夠直接簡化,變成itemCode。
訪問頻率控制主要就是借助于攔截器完成的,實現(xiàn)的主要類有Limit Interceptor,實際判斷邏輯主要借助于API UID Frequence 得以實現(xiàn)。針對訪問頻率進(jìn)行控制就是要統(tǒng)計用戶們在5min 內(nèi)的具體訪問次數(shù),明確是否存在超額問題。首先會獲取緩存內(nèi)部數(shù)據(jù)信息,針對用戶們在規(guī)定時間內(nèi)是否會出現(xiàn)5min 訪問的情況進(jìn)行判斷,如果超過,則應(yīng)當(dāng)重新對訪問次數(shù)與時間進(jìn)行計算。如果在有效期內(nèi),則應(yīng)當(dāng)判斷這一階段內(nèi)的訪問次數(shù)與規(guī)定頻率之間是否相符,一旦超出則應(yīng)當(dāng)針對用戶們的特殊權(quán)限與特殊規(guī)則進(jìn)行繼續(xù)判斷,特殊用戶則能夠繼續(xù)進(jìn)行訪問,但也可以直接上報,如果用戶不是特殊類型的用戶,則應(yīng)當(dāng)對其訪問進(jìn)行限制。如果緩存當(dāng)中沒有數(shù)據(jù),則需要新增技術(shù)與計時,并將其更新在緩存當(dāng)中。
2.4.1 系統(tǒng)管理員用例
開放系統(tǒng)內(nèi)部操作最頻繁的一個人員就屬于管理人員,通常分為應(yīng)用管理、訪問頻率管理與業(yè)務(wù)接口管理三方面。其中應(yīng)用管理包括以下內(nèi)容:(1)查詢檢索應(yīng)用。所有應(yīng)用都應(yīng)當(dāng)在系統(tǒng)當(dāng)中注冊,集中展示到系統(tǒng)當(dāng)中,更便于管理員隨時檢查和具體應(yīng)用;(2)查看詳細(xì)的應(yīng)用信息。管理人員可以隨時獲取應(yīng)用所有信息和功能,比如其中的開發(fā)者數(shù)據(jù)信息、訪問Token 以及應(yīng)用權(quán)限等;(3)審核應(yīng)用與測試。所有應(yīng)用在系統(tǒng)推向用戶之前,都應(yīng)當(dāng)通過開發(fā)自測與系統(tǒng)檢測,確保其沒有任何不良導(dǎo)向之后才能夠推向所有用戶;(4)卸載應(yīng)用。應(yīng)用廢氣或合作完成之后,管理人員可以將應(yīng)用直接卸載。
業(yè)務(wù)接口管理主要包括以下用例:(1)新增接口鑒權(quán)信息。開放系統(tǒng)當(dāng)中的業(yè)務(wù)接口主要可以劃分為三大類,即訪問公共信息類、訪問用戶信息類以及設(shè)計用戶隱私與商業(yè)信息類;(2)接口修改鑒權(quán)信息。管理人員可以隨時針對業(yè)務(wù)接口內(nèi)部鑒權(quán)信息進(jìn)行查看,同時也可以隨時修改;(3)查詢接口列表。業(yè)務(wù)接口都可以結(jié)合電商流程在不同的模塊內(nèi)完成分類,比如常見的訂單接口與商品杰闊等,而管理人員則可以針對不同模塊內(nèi)的接口列表進(jìn)行查詢;(4)查詢接口內(nèi)部信息。業(yè)務(wù)接口內(nèi)部信息較為豐富,管理員能夠隨時查看所有接口當(dāng)中的所有信息。
2.4.2 第三方開發(fā)者用例
負(fù)責(zé)開發(fā)的第三方主要用例可分為以下幾點:(1)服務(wù)商的注冊。第三方的所有開發(fā)者既能夠是個人、企業(yè),也可以是團(tuán)隊,在開發(fā)者們開發(fā)調(diào)用接口過程中,首先需要在系統(tǒng)內(nèi)部將自己注冊變成服務(wù)商,也就是以合作者的身份進(jìn)行開發(fā)。通??梢赃M(jìn)行個人與企業(yè)兩種不同的服務(wù)商注冊;(2)申請應(yīng)用開通權(quán)限。開發(fā)者可以在完成注冊后,便第一時間申請開通,完成開通后則可以獲取ID、訪問權(quán)限以及數(shù)字簽名,而后便能夠開發(fā)應(yīng)用;(3)查看應(yīng)用。第三方開發(fā)者通??梢蚤_發(fā)多種應(yīng)用,特別是類似于企業(yè)與團(tuán)隊開發(fā)人員,他們能夠隨時對應(yīng)用列表與信息進(jìn)行查看,比如開通應(yīng)用期間必備的3 個主要參數(shù);(4)應(yīng)用信息的完整編輯。針對自行開發(fā)的應(yīng)用,開發(fā)人員還能夠編輯系統(tǒng)內(nèi)部基礎(chǔ)信息,明確具體的開發(fā)進(jìn)度、應(yīng)用功能以及開發(fā)設(shè)置等;(5)管理應(yīng)用。在結(jié)束應(yīng)用開發(fā)后,就應(yīng)當(dāng)推出用戶應(yīng)用,需要利用管理人員審核才能夠正式推出應(yīng)用,所以要求開發(fā)人員需要進(jìn)行直接的審核申請,其中包括測試申請審核的應(yīng)用,還有上下架以及升級等具體內(nèi)容。
綜上所述,在當(dāng)前的大數(shù)據(jù)背景下,電子商務(wù)平臺API 開放系統(tǒng)的科學(xué)設(shè)計與實現(xiàn),能夠有效推動網(wǎng)絡(luò)大數(shù)據(jù)技術(shù)的合理應(yīng)用,使其更好地服務(wù)于電商行業(yè),促進(jìn)電商行業(yè)的現(xiàn)代化、先進(jìn)化、高效化發(fā)展。
數(shù)字技術(shù)與應(yīng)用2023年4期