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