近期在做軟件升級操作的時候突然想著需要的參數比較多,如果需要參數的話參數比較多,所有想著使用frombody來集合數據統一操作做了個樣張希望對您有幫助
代碼如下:
/// <summary>/// 入口當前文件接口下的操作數據/// </summary>/// <param name="ModelIn">入口數據</param>/// <returns></returns>[System.Web.Http.HttpPost]public JsonResult<ResultMsgWeb> GetSoftWareLastModel([FromBody]GetLastTBInfos ModelIn){ResultMsgWeb thisMsg = new ResultMsgWeb { Code = 0, CreateDate = DateTime.Now, Msg = "未操作" };if (ModelIn != null){UserInfo ThisUser = new UserInfo() { UserName = ModelIn.UserName, Pwd = ModelIn.Pwd };UserInfo GetUser = new DAL.DALUserInfo().GetModelByParm(ThisUser, "UserName", "Pwd");if (GetUser != null){SoftUpTB ThisUpdateModel = new DAL.DALSoftUpTB().GetLastModelByGuid(ModelIn.SoftGuid);ThisUpdateModel.VisiteUserId = GetUser.Id ;if (ThisUpdateModel != null){Version ClientVersionV = new Version(ModelIn.ClientVersion);Version VersionMax = new Version(ThisUpdateModel.SoftVersion);if (ClientVersionV < VersionMax){ thisMsg.Code = 200;thisMsg.Msg = $"數據庫中最大版本是{ThisUpdateModel.SoftVersion},可以更新!";}else{ thisMsg.Code = 250;thisMsg.Msg = $"數據庫中最大版本是{ThisUpdateModel.SoftVersion},與本地{ModelIn.ClientVersion}更新不匹配,不能更新";}thisMsg.Datas = JsonConvert.SerializeObject(ThisUpdateModel); }else{thisMsg.Code = 404;thisMsg.Msg = "未發現數您guid的數據";} }else{thisMsg.Code = 500;thisMsg.Msg = "未找到對應的用戶";}}else{thisMsg.Code = 404;thisMsg.Msg = "解析數據為空";}return Json<ResultMsgWeb>(thisMsg); }
其中winform端訪問的代碼為(使用 RestSharp 包操作 Apifox 自動生成的代碼 使用x-www-form-urlencoded 傳送參數 ):
/// <summary>/// /// </summary>/// <param name="ModelIn"></param>/// <returns></returns>public ResultMsg CheckVersionByTBInfos(GetLastTBInfos ModelIn){ResultMsg MsgOut = new ResultMsg() { Success = false, ErrMsg = "未操作" };if (ModelIn != null && !string.IsNullOrWhiteSpace(GModel.MainAPIHead)){var client = new RestClient($"{GModel.MainAPIHead}/api/UpdateSoftMain/GetSoftWareLastModel");client.Timeout = -1;var request = new RestRequest(Method.POST);client.UserAgent = "Apifox/1.0.0 (https://apifox.com)";request.AddParameter("UserName",ModelIn.UserName);request.AddParameter("Pwd",ModelIn.Pwd);request.AddParameter("SoftGuid",ModelIn.SoftGuid);request.AddParameter("ClientVersion",ModelIn.ClientVersion);try{IRestResponse response = client.Execute(request);if (!string.IsNullOrWhiteSpace(response.Content)){ResultMsgWeb ThisMsgWeb = JsonConvert.DeserializeObject<ResultMsgWeb>(response.Content);if (ThisMsgWeb != null){if (ThisMsgWeb.Code == 200)//200 是正常反饋可以更新下載操作{MsgOut.Success = true; MsgOut.ReturnString = ThisMsgWeb.Datas.ToString();}else{MsgOut.Success = false; }MsgOut.ErrId = ThisMsgWeb.Code;MsgOut.ErrMsg = ThisMsgWeb.Msg;}else{MsgOut.Success = false;MsgOut.ErrMsg = $"解析失敗:反饋內容是{response.Content}";}}else{MsgOut.Success = false;MsgOut.ErrMsg = $"解析失敗:內容未獲取";}}catch (Exception ex){MsgOut.Success = false;MsgOut.ErrMsg = $"操作失敗:{ex.Message}{ex.StackTrace}";} }else{MsgOut.Success = false;MsgOut.ErrMsg = $"傳入參數為空,或者配置文件讀取為空{GModel.MainAPIHead}";}LogWrite.WriteLog(MsgOut.ErrMsg);return MsgOut;}
MVCWebAPI 獲取 客戶端IP地址的方法:
ModelIn.ClientIP = HttpContext.Current.Request.UserHostAddress;
路由配置方法:
public static void Register(HttpConfiguration config){// Web API 配置和服務// Web API 路由config.MapHttpAttributeRoutes();config.Routes.MapHttpRoute(name: "DefaultApi",routeTemplate: "api/{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional });}