C RESTful API 訪問輔助類

2022-05-24 20:27:21 字數 2606 閱讀 3885

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 ...