WebApi開發爬坑記之·一重寫ApiController
阿新 • • 發佈:2019-01-27
公司突然要求給寫介面 ,雖然.net的webpai 和mvc大同小異 但是還是有些細節的地方有區別
然後果斷進入坑了
一步一步開始爬坑了!
為了便於對Controller的控制的,肯定先重寫ApiController啊!
程式碼說話
public class BaseController : ApiController { public int loginid { get; set; } public string loginname { get; set; } public BaseBll baseBll { get; set; } protected override void Initialize(HttpControllerContext controllerContext) { //初始化請求上下文 base.Initialize(controllerContext); try { new SortedDictionary<string, string>(); string username = string.Empty; HttpRequestHeaders headers = controllerContext.Request.Headers; if (headers.Contains("e")) { text = (headers.GetValues("e").FirstOrDefault<string>().ToString() ?? string.Empty); text = System.Web.HttpUtility.UrlDecode(username); } UserInfoEntity userInfo = new LoginBll().GetUserInfo(username); this.loginid = userInfo.LoginID; this.loginname = userInfo.LoginName; List<UserAuthorityEntity> tempList = userInfo.UserRole.UserAuthority; //不存在安全問題 後續文章有許可權驗證 if (tempList.Where(c => c.AuthorityName == "許可權名稱").ToList().Count > 0) { //呼叫一個有許可權的bll層 this.baseBll = new SeniorBll(); } else { //呼叫一個沒有許可權的bll層 this.baseBll = new OrdinaryBll(); } } catch (Exception ex) { LogHelper.WriteErrorLog("Initialize", ex); } } /// <summary> /// 設定action返回資訊 /// </summary> /// <param name="result">返回實體</param> /// <returns></returns> protected HttpResponseMessage GetHttpResponseMessage(object result) { BaseResponseEntity<object> responseBaseEntity = new BaseResponseEntity<object>(0, result, string.Empty); return new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(responseBaseEntity, dtConverter), System.Text.Encoding.UTF8, "application/json") }; } /// <summary> /// 設定action返回資訊 /// </summary> /// <param name="result">返回實體</param> /// <param name="msg">返回的資訊引數</param> /// <returns></returns> protected HttpResponseMessage GetHttpResponseMessage(object result, ref string msg) { BaseResponseEntity<object> responseBaseEntity = new BaseResponseEntity<object>(0, result, msg ?? string.Empty); return new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(responseBaseEntity, dtConverter), System.Text.Encoding.UTF8, "application/json") }; } }