MVCWebAPI使用FromBody接受对象的方法

发布于:2025-05-01 ⋅ 阅读:(65) ⋅ 点赞:(0)

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

网站公告

今日签到

点亮在社区的每一天
去签到