WebApi路由及版本控制

2022-05-07 06:24:09 字數 2929 閱讀 9284

}//取路由相應值

}//匹配相應路由

//從route中讀取命名空間名稱和控制器名稱

//獲取版本號

var version =getversionfromacceptheaderversion(request);

var versionedcontrollername = string

.concat(controllername, version).tolower();

string versionkey =versionedcontrollername;

//尋找匹配項

//如果命名空間名稱為空,呼叫baseroute,反之採用defaultapi

string namespacename = getroutevariable(routedata, namespacekey);

string key =controllername;

if (namespacename != null

) .

", namespacename, controllername);

versionkey = string.format(cultureinfo.invariantculture, "."

, namespacename, versionedcontrollername);

if (_controllers.value.trygetvalue(key, out

controllerdescriptor))

return

controllerdescriptor;

}else

if(_duplicates.contains(key))

else

}else

controllerdescriptor =basecontroller.firstordefault().value;

var baseversioncontroller = _controllers.value.where(p =>p.key.tolower().endswith(versionkey));

if(baseversioncontroller.any())

return

controllerdescriptor;

}else}}

//////

新增版本控制

webapi 版本控制

軟體開發過程中,常常會需要變更以前的介面,新增或刪除介面請求字段,介面字段校驗 甚至是變更請求 返回欄位名稱,如果強制要求所有客戶端跟著一起公升級代價太大。如果介面從一開始就考慮到了版本的設計,那麼做到平滑公升級就很容易了。在路徑裡傳入版本號 優點 可以做到大版本切換,路由下的所有介面同時更新 缺點...

WebApi路由約束

自 路由約束讓我們可以限制模板引數的匹配方式。一般的語法是 route users public user getuserbyid int id route users public user getuserbyname string name 如果引數int,則選中第乙個getuserbyid,否...

關於Web API 版本控制的一些想法

一 版本數量 出於對維護成本考慮,api版本數量最好有個限制,比如只保留最新的5個api版本 二 版本有效期 針對每個api版本,設定乙個使用期限標識。比如最新的api版本已經更新到了v9,但是有的使用者還在使用v1的老版本,這個時候需要某種機制來強制公升級使用者版本。三 同乙個版本的相容性問題 有...