}//取路由相應值
}//匹配相應路由
//從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的老版本,這個時候需要某種機制來強制公升級使用者版本。三 同乙個版本的相容性問題 有...