c# – 如何在Web API中处理可选的查询字符串参数
发布时间:2020-12-16 01:54:21 所属栏目:百科 来源:网络整理
导读:我正在编写Web API,我希望了解处理可选查询字符串参数的最佳方法是什么. 我有一个定义如下的方法: [HttpPost] public HttpResponseMessage ResetPassword(User user) { var queryVars = Request.RequestUri.ParseQueryString(); int createdBy = Convert.To
我正在编写Web API,我希望了解处理可选查询字符串参数的最佳方法是什么.
我有一个定义如下的方法: [HttpPost] public HttpResponseMessage ResetPassword(User user) { var queryVars = Request.RequestUri.ParseQueryString(); int createdBy = Convert.ToInt32(queryVars["createdby"]); var appId = Convert.ToInt32(queryVars["appid"]); var timeoutInMinutes = Convert.ToInt32(queryVars["timeout"]); _userService.ResetPassword(user,createdBy,appId,timeoutInMinutes); return new HttpResponseMessage(HttpStatusCode.OK); } 我可以通过在post主体中提供用户对象并可选地提供任何其他查询字符串值来调用它,但是当我有一个随机分类参数的一次性情况时,这是解析的最佳方式? 解决方法
您应该使用包含所有可能参数的视图模型.然后让您的API方法将此视图模型作为参数.永远不要触摸您的操作中的原始查询字符串:
public class UserViewModel { public string CreatedBy { get; set; } public string AppId { get; set; } public int? TimeoutInMinutes { get; set; } ... other possible parameters } 然后在您的操作中,您可以将视图模型映射到域模型: [HttpPost] public HttpResponseMessage ResetPassword(UserViewModel userModel) { User user = Mapper.Map<UserViewModel,User>(userViewModel); _userService.ResetPassword(user,userModel.CreatedBy,userModel.AppId,userModel.TimeoutInMinutes); return new HttpResponseMessage(HttpStatusCode.OK); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |