WebApi系列 基於單請求封裝多請求的設計

2021-09-22 11:03:10 字數 2768 閱讀 9194

怎麼說,單請求封裝多請求,這句話確實有點繞了,但還是要看清楚,想明白這到底是怎麼一回事,單請求即一次請求(get,post,put,delete),封閉多請求,即在客戶端傳送的乙個請求中可能包含多個子請求(真實的請求,介面),這種設計確實看著很靈活,客戶端可以根據自己的需要去拿伺服器的資料,確實不錯!

首先我們要定義一套自己的請求和響應物件

#region 請求物件

//////引數物件

///[datacontractattribute]

public

class

requestparam

[datamemberattribute]

public

string paramname

[datamemberattribute]

public

string paramvalue

}//////

資料報中的實體

///[datacontractattribute]

public

class

requestdata

//////

本次通訊唯一標示

///[datamemberattribute]

public

string guidkey

//////

請求方式0:get,1:post

要呼叫的方法

///[datamemberattribute]

public

string url

//////

方法的引數列表

///[datamemberattribute]

public idictionary requestparam

}//////

請求資料報

///[datacontractattribute]

public

class

requestdatasegment

[datamemberattribute]

public listrequestdata

}#endregion

再來看一下響應物件

#region 響應物件

//////資料報實體

///[datacontractattribute]

public

class

responsedata

//////

狀態:100失敗,200成功

///[datamemberattribute]

public

int status

//////

資料報:json物件

///[datamemberattribute]

public

string data

}//////

響應資料報

///[datacontractattribute]

public

class

responsedatasegment

[datamemberattribute]

public listresponsedata

}#endregion

而我們伺服器對客戶端開放的是乙個大介面,或者叫入口介面,它負責把客戶端傳來的請求進行解析,然後**客戶端,處理多請求,並將結果進行組裝,返回給客戶端,在mvc和web api裡,我們為了讓程式擴充套件性更強,通常把這個核心邏輯寫在attribute裡

下面看一下**的實現 

///

///api**過濾器(api多工請求的入口)

對於你的具體專案,選個主入口,在它上面新增上apiproxy特性即可

///

///api統一處理的入口

/// ///

[apiproxyfilter]

public

jsonresult index()

現在你就可以去測試你的客戶端了,哈哈,看是否把你的單個請求裡的(三個請求)**並為你返回了,呵呵.

MFC基於單文件分割視窗

建立乙個mfc單文件應用程式命名為test 開啟資源管理器dialog,右擊滑鼠,插入兩個對話方塊選擇基於cformview類 屬性style改為child,broad改為none 在對話方塊中插入類,分別命名為cdialogdata,cdialoga.開啟類檢視,右擊cmainfrm類,選擇屬性,...

基於單鏈表實現的桶排序

1.問題描述 使用桶排序演算法對控制台輸入的數字進行排序 2.桶排序涉及到幾個問題 1.桶的大小,這裡我們可以根據輸入的元素的個數來確定桶的大小 2.怎麼確定當前元素進入哪乙個桶,這裡我們使用到的是通過乙個雜湊函式來進行計算 element為當前元素的值,length為桶的大小,max為陣列中最大元...

排序之基於單鏈表插入排序

插入排序的具體方法在上文已經介紹過,此文不再贅述。對於陣列,可以使用索引來輕易操作上下元素,但是單鏈表則只能通過指向下一節點的元素來操作。因此,需要兩個指標firstoutoforder 指向第乙個無序元素的節點 和lastinorder 指向最後乙個有序元素的節點 首先,比較firstoutofo...