rest 全稱是 representational state transfer,有人說它是一種風格,並非一種標準,個人覺得挺有道理。它本身並沒有創造新的技術、元件與服務,更像是告訴大家如何更好地使用現有web標準中的一些準則和約束,也不可否認,restful 是目前最流行的 api 設計規範,用於 web 資料介面的設計。restful 風格的 api,在 http 協議上使用的是標準 http 方法,get、put、post 和 delete 等。
(2)請求的 body 資料部分使用 json 形式
(3)鑑權資訊使用 jwt 等形式的授權碼方式,放在請求頭部屬性中傳輸,屬性名稱自定義,如 auth,token 等等
(1)屬性定義
定義屬性:tokenheadername
上述實踐描述中,自定義部分為鑑權資訊在頭部屬性中的名稱,定義該屬性表示這個名稱。
定義屬性:defaulttoken
考慮到鑑權資訊在某些場景下可初始為乙個固定值,定義該屬性在預設情況下使用。
具體定義如下:
// 鑑權 token 的請求頭屬性名稱
public string tokenheadername
// 預設的鑑權 token 資訊
public string defaulttoken
(2)方法定義方法定義跟標準的 http 方法一致,這裡定義常用的 get、put、post、delete 方法。
再抽取其中會重複的部分形成一些私有方法來復用,再過載一些方法使得可以應用預設引數值。
(2.1)構造方法
構造時可以指定鑑權頭部屬性名和 token,也可以不指定。
public restapivisithelper()
// 構造時設定鑑權 token 的請求頭屬性名稱
public restapivisithelper(string tokenheadername)
// 構造時設定鑑權 token 的請求頭屬性名稱,以及預設的 token 值
public restapivisithelper(string tokenheadername, string defaulttoken)
(2.2)訪問所需輔助方法(2.2.1) 建立 webclient,設定好相關屬性,包括鑑權頭部資訊
// 建立 webclient 並設定好 token 資訊
private webclient createwebclient(string token)
webclientobj.encoding = encoding.utf8;
return webclientobj;
}
(2.2.2)將查詢引數格式化拼接成最終 url
// 將查詢引數格式化拼接到 url 上形成最終的訪問位址
private string formaturl(string apiurl, hashtable queryparams)
querystring += string.format("=", k, queryparams[k]);
}if (!string.isnullorempty(querystring))
return apiurl;
}
(2.2.3)異常統一處理
出現請求異常時,可以統一進行處理,具體返回結果可自行定義。
// 異常時返回的資訊:應該根據實際需要進行返回
private string whenerror(exception e)
else
}else
return result.tostring(newtonsoft.json.formatting.none);
}
(2.3)公開方法具體實現有了以上輔助方法,實現**會變得簡潔,且各個方法**結構類似。以下以 post 方法(包括過載) 為例展示基本實現。
/// /// post api 返回結果文字,使用預設的鑑權 token
///
///
///
///
///
public string post(string apiurl, hashtable queryparams, jobject body)
/// /// post api 返回結果文字
///
///
///
///
///
///
public string post(string apiurl, hashtable queryparams, jobject body, string token)
catch (exception ce)
}
mysql 輔助表 MySQL 數字輔助表
數字輔助表是乙個包含從 1 到 n 的 n 個整數的簡單表,n 通常很大。因為數字輔助表是乙個非常強大的工具,可能經常需要在解決方案中用到它,所以建議建立乙個持久的數字輔助表,並根據需要填充一定資料量的值 mysql技術內幕 sql程式設計 建立數字輔助表 create table nums a i...
mysql數字輔助表 MySQL中數字輔助表的建立
數字輔助表是乙個只包含從1到n的n個整數的簡單表,n通常非常大 如何建立這樣乙個輔助表 1 我們可以通過下面這個方式建立 mysql create table nums a int unsigned not null primary key engine innodb query ok,0 rows...
STL vector 輔助函式
template inline bool operator const vector tp,alloc x,const vector tp,alloc y 判斷相等 template inline bool operator const vector tp,alloc x,const vector ...