葉剛
摘要: Web接口統(tǒng)一化管理與設(shè)計介紹了如何規(guī)范化的、高效的管理諸多類型的接口。本文的設(shè)計適用于對外提供數(shù)據(jù)接口的管理類型系統(tǒng),它從數(shù)據(jù)接口的類型:靜態(tài)數(shù)據(jù)源、數(shù)據(jù)庫數(shù)據(jù)源、本地方法以及第三方API,請求方式,接口返回的數(shù)據(jù)格式,接口訪問入口地址唯一,可視化管理,接口日志管理,靜態(tài)數(shù)據(jù)源管理,數(shù)據(jù)庫配置管理等方面對其進行設(shè)計。
【關(guān)鍵詞】管理系統(tǒng) 接口規(guī)范化
1 引言
接口指外部應(yīng)用獲取系統(tǒng)數(shù)據(jù)時,系統(tǒng)為其提供自己允許訪問的入口(請求路徑),稱為接口。隨著近年來前后端分離,Web接口開發(fā)變得愈發(fā)重要了。以前對于一些管理系統(tǒng),其是對數(shù)據(jù)進行管理為主,大多都是一些增加,修改,刪除,查詢簡單操作,頁面簡單,由后端開發(fā)人員完成頁面與后臺業(yè)務(wù)的開發(fā)是綽綽有余的。隨著前端頁面越來越復(fù)雜化,頁面需要設(shè)計與前端人員開發(fā),此時后端人員無法完成這么復(fù)雜的頁面開發(fā),需要專人完成前端開發(fā),后端只需提供Web接口。Web接口的運用場景有很多如:前端頁面調(diào)用(如:大屏、官網(wǎng)等),移動終端調(diào)用,不同系統(tǒng)之間的調(diào)用。
2 接口類型概念
管理系統(tǒng)對外提供的Web接口類型多種多樣,便于規(guī)范化的管理,根據(jù)數(shù)據(jù)源類型做出以下分類:
2.1 靜態(tài)數(shù)據(jù)源接口
管理系統(tǒng)可能會對外提供一些靜態(tài)數(shù)據(jù),用來實現(xiàn)某些實例,比如提供儀表盤圖表的demo數(shù)據(jù){”series”:[{”name”:”業(yè)務(wù)指標”,”type”:”gauge”,”data”:[{”value”: 50,”name”:”完成率”)]}】),這種常量類型接口稱之為靜態(tài)數(shù)據(jù)源接口;
2.2 數(shù)據(jù)庫接口
有些業(yè)務(wù)需求比較簡單基本沒有邏輯上得處理,可以直接通過數(shù)據(jù)庫查詢獲取接口數(shù)據(jù),這種類的接口為數(shù)據(jù)庫接口;
2.3 本地方法接口
有些業(yè)務(wù)接口比較邏輯比較繁雜,通過簡單的數(shù)據(jù)庫接口無法實現(xiàn),需要后臺提供一個接口方法做邏輯處理后返回數(shù)據(jù),這類接口稱之為本地方法接口。
2.4 第三方API接口
有些接口本可以直接由第三方提供(如:天氣接口),亦可以被直接調(diào)用,但是便于統(tǒng)一化管理,這類通過后臺管理的第三方的接口在此稱為第三方API接口。
3 規(guī)范化設(shè)計
在開發(fā)移動終端或復(fù)雜的前端頁面時,我們可能需要設(shè)計大量的Web接口,這些接口的類型可能多種多樣,同時根據(jù)功能的不同接口的功能類型亦可以是多種多樣,需求的不同接口返回的數(shù)據(jù)格式也可能不同,太多的不同接口文檔的編寫存在一定的困難.接口修改時文檔的即時更新也是存在的問題。針對此,提出對Web接口的規(guī)范化與可視化設(shè)計:
(1)對于接口量比較大的管理,通過文檔實現(xiàn)對其管理是遠遠不夠的,我們針對接口的共性將其數(shù)據(jù)化管理,每個接口轉(zhuǎn)化成一條數(shù)據(jù)記錄存于關(guān)系表中。同時設(shè)置備注屬性,備注每個接口的使用方以及法使用場景。按照接口類型,接口功能類型設(shè)置接口的相關(guān)屬性,按照功能設(shè)置接口名稱。一個個接口轉(zhuǎn)化成數(shù)據(jù)庫中的一條條記錄,接口的可視化轉(zhuǎn)變?yōu)槌R姷年P(guān)系表的可視化。
(2)針對接口不同類型的返回數(shù)據(jù)全部轉(zhuǎn)化為JSON格式的數(shù)據(jù),實現(xiàn)接口返回數(shù)據(jù)時的規(guī)范化。
(3)只對外提供一個訪問入口,訪問各個接口根據(jù)數(shù)據(jù)庫記錄以參數(shù)的形式獲取每個接口的屬性,從而調(diào)用相應(yīng)接口,減少接口暴露過多的在系統(tǒng)外,保證提供接口的系統(tǒng)安全。
(4)接口的調(diào)用情況生成日志,存于數(shù)據(jù)庫中,對其數(shù)據(jù)管理,通過對接口日志管理,為接口的使用情況有據(jù)可查。
(5)對于靜態(tài)數(shù)據(jù)源數(shù)據(jù)進行管理,規(guī)范化靜態(tài)數(shù)據(jù)格式(JSON格式),以便靜態(tài)接口調(diào)用的靜態(tài)數(shù)據(jù)的查找與修改。
(6)連接數(shù)據(jù)庫的配置進行管理,達到多數(shù)據(jù)源的數(shù)據(jù)庫接口均能實現(xiàn)調(diào)用。
4 接口規(guī)范化實現(xiàn)
基于規(guī)范化設(shè)計,通過數(shù)據(jù)庫管理接口,接口日志,靜態(tài)數(shù)據(jù),數(shù)據(jù)庫配置等,在管理系統(tǒng)中對其可視化管理。最后通過參數(shù)形式調(diào)用接口,使得訪問接口的入口唯一。以下為接口調(diào)用的主要代碼:
if(dataInterface.getlnterfaceSource()==2){
//第三方api
json= getDataApi(datalnterface,objectld,page);
}else if(datalnterfacegetInrerfaceSource()==4){
∥本地方法
json= getDataLocal(datalnterface,obj ectld);
,elseif
(dataInterface.getInterfaceSource()==3 &&dataInterface.getDataInterfaceSourceld;()f_
null&&datalnterfacegetDataInterfaceSourceld;().length(》0){
∥數(shù)據(jù)庫
json= getDaraDb(datalnterface);
,elseif
(dataInterface.getInterfaceSource()==l&&dataInterface.getDataInterfaceSourceld;()!=
null&&datalnterfacegetDataInterfaceSourceld;().length(》0){
∥靜態(tài)數(shù)據(jù)源
j son= getDataStatic(datalnterface);
)
5 總結(jié)
綜上所述,Web接口規(guī)范化管理設(shè)計與實現(xiàn)具有以下優(yōu)點:
(1)可以通過頁面直觀地展示各個接口,根據(jù)接口名稱以及備注很方便的知道接口如何使用;
(2)通過接口日志管理提供各個接口一個月內(nèi)調(diào)用情況f是否成功與何時被調(diào)用);
(3)通過頁面可以控制接口是否被調(diào)用;
(4)方便書寫接口文檔;
(5)此種設(shè)計,接口訪問入口唯一保證了提供接口的系統(tǒng)的安全性;
(6)對于多數(shù)據(jù)源接口,在只知道表結(jié)構(gòu)的前提下,只需要在接口管理新增接口,添加要執(zhí)行的SQL語句即可,方便了多數(shù)據(jù)源的數(shù)據(jù)庫接口編寫。
參考文獻
[1]劉增杰.MySQL 5.7從入門到精通[M],清華大學(xué)出版社,2016.
[2]蟲師.Web接口開發(fā)與自動化測試[M].電子工業(yè)出版社,2017.
[3]阿奎/.Python編程基礎(chǔ)與HTTP接口測試[M].電子工業(yè)出版社,2018.
[4]張軍,基于Web Services的教據(jù)交換平臺的設(shè)計與實現(xiàn)[J].軟件工程,2017 (03).