本節內容咱們將學習開發實現後臺管理平臺頁面統計功能開發的功能接口,本章節內容將涉及到多種請求路由的方式。javascript
後臺管理平臺不只是功能管理平臺,同時仍是數據管理平臺。從數據管理平臺角度來講,在管理平臺中須要提供對平臺各項數據的實時跟蹤和監測,以方便管理員用戶可以看到平臺數據走勢,在後臺功能中主界面,提供了展現用戶、管理員、商品等多種數據的統計狀況。以下圖所示: java
在上面的圖中,咱們能夠看到涉及的統計及類別是多種數據類型,總結概括主要有如下幾類:正則表達式
當日增加數據(用戶、訂單、管理員)json
總數據統計(用戶、訂單、管理員)瀏覽器
圖表數據統計(用戶、訂單、管理員) 在最後一個類別的圖標數據統計當中,圖表展現最近一個周的三種數據的增加狀況,這裏的最近一週的日期是在不斷變化的。bash
在看到上述功能效果並進行功能分析之後,咱們從請求出發,對統計數據接口進行分類。首先打開瀏覽器右上角的擴展功能,找到更多工具,選擇開發者工具,打開調試工具。以下圖所示: 服務器
咱們能夠經過接口詳情請求的內容看到接口請求詳情,供咱們來進行開發使用,主要關注接口請求詳情種的幾個數據:session
請求URL:用於表示向後臺進行惟一的請求標識,可以經過路由進行惟一的識別。在具體的請求接口中,Request URL中除去主機域名部分就是請求的url。mvc
請求類型:在以前課程中,咱們已經講過多種請求類型,GET、POST等。在具體的請求接口中,Request Method所對應的值就是請求類型。app
請求攜帶數據格式:該字段用於表示在請求時,以什麼樣的方式向服務器提交數據,或者說該字段規定了向服務器提交什麼類型的數據。在具體的請求接口中,Content-Type字段用於指定向服務器提交什麼類型的數據,支持的數據格式有以下可選項:
Form表單:application/x-www-form-urlencoded,application/form-data
Json:application/json
Javascript:application/javascript
XML: application/xml
請求數據:具體的向服務器提交的請求數據內容。
知道了這幾項內容,咱們就可以在後臺進行開發咱們的代碼。
瞭解完接口請求重要的數據和請求數據類型之後,咱們能夠將統計模塊中的這些數據請求接口進行梳理,並進行分類。方便咱們服務器進行分類處理。通過梳理,咱們會發現,一共有三類請求接口類型:
當日增加數據接口請求:
當日用戶增加數據接口請求:/statis/user/NaN-NaN-NaN/count
當日訂單增加數據接口請求:/statis/order/NaN-NaN-NaN/count
當日管理員增加數據接口請求:/statis/admin/NaN-NaN-NaN/count
總記錄數據接口請求:
用戶總數接口請求:/v1/users/count
訂單總數接口請求:/bos/orders/count
管理員總數接口請求:/admin/count
近7日天天增加數據接口請求:
近7日天天的用戶增加數據接口請求:/statis/user/2019-04-05/count (2019-04-05值會按照最近1周天天的日期進行變化)
近7日天天的訂單增加數據接口請求:/statis/order/2019-04-05/count (2019-04-05值會按照最近1周天天的日期進行變化)
近7日天天的管理員增加數據接口請求:/statis/admin/2019-04-05/count (2019-04-05值會按照最近1周天天的日期進行變化)
通過如上的分析,咱們已經可以看到,三類數據請求中,其中有兩類使用/statis前綴來進行數據接口請求。按照項目模塊化開發的原則,咱們作以下實現:
新建立統計模塊功能,用於實現統計功能的接口數據請求;
總記錄數據接口請求,在各自的功能模塊中進行實現。
通過如上的方案分析,咱們要建立統計模塊了。
既然是一個全新的模塊,咱們就使用mvc來構建實現請求邏輯處理和業務功能實現。首先,就要定義統計模塊控制器,代碼定義以下:
type StatisController struct {
//上下文環境對象
Ctx iris.Context
//統計功能的服務實現接口
Service service.StatisService
//session
Session *sessions.Session
}複製代碼
如上的StatisController控制器,僅僅是負責進行請求業務邏輯處理,重要的邏輯功能實現,須要在數據功能提供者中實現,這裏就是咱們定義的StatisService。好比StatisService向外提供如下功能接口及定義:
type StatisService interface {
//查詢某一天的用戶的增加數量
GetUserDailyCount(date string) int64
GetOrderDailyCount(date string) int64
GetAdminDailyCount(date string) int64
}複製代碼
上述StatisService僅僅是接口標準的定義。爲了實現代碼的解耦,咱們經過另外的實現定義來對接口進行功能實現,以下所示:
type statisService struct {
Engine *xorm.Engine
}複製代碼
該statisService便是咱們定義的實現StatisService接口的結構體,該結構體會實現上述StatisService的三個全部方法,並完成具體的業務邏輯,具體的代碼開發咱們下節課內容講解。
當咱們搭建好StatisController以及StatisService時,咱們須要讓咱們的控制器爲咱們工做起來,用來接受咱們的瀏覽器請求,咱們須要在咱們的程序啓動處,經過mvc配置將咱們的StatisControll和app對象綁定起來。以下綁定操做:
statisService := service.NewStatisService(engine)
statis := mvc.New(app.Party("/statis/{model}/{date}/"))
statis.Register(
statisService,
sessManager.Start,
)
statis.Handle(new(controller.StatisController))複製代碼
在上文咱們對請求作分析分類時,咱們說到了在進行請求統計時,會有日期變化的url請求,也有不一樣模塊的請求。如何解析動態變量的url請求?咱們這裏就運用到了以前的學習知識正則表達式識別請求。
app.Party("/statis/{model}/{date}/")複製代碼
該路由組就能夠識別以statis開頭的請求,{model}用來區分表示模塊,具體取值有admin、order、user。{date}用來表示日期。
本節內容咱們對統計功能作了分類和分析,並着手創建了咱們總體的代碼邏輯,下節內容咱們將具體實現這些功能接口的代碼開發。