MVCWebAPI使用FromBody接受对象的方法
近期在做软件升级操作的时候突然想着需要的参数比较多,如果需要参数的话参数比较多,所有想着使用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 });}