.net5 core webapi项目实战之十一:F6用户更新自己的信息及[FromForm]使用

本篇实现F6功能(见红色部分)

功能序号 HTTP谓词(HTTP verbs) API 描述
F1 GET /api/users 管理员获取用户列表
F2 POST /api/users 管理员添加用户
F3 PATCH /api/users/{id}/role 管理员修改用户角色
F4 PATCH /api/users/{id}/state 管理员锁定/解锁用户
F5 GET /api/users/{id} 用户获取自己的信息
F6 PUT /api/users/{id} 用户更新自己的信息
F7 PATCH /api/users/{id}/password 用户修改密码
       

 

代码如下:

 1         [HttpPut]
 2         [Route("{id}")]
 3         public ContentResult ModifyUser(int id)
 4         {
 5             User user = new User()
 6             {
 7                 UserId = id,
 8                 Nickname = Request.Form["Nickname"],
 9                 Email = Request.Form["Email"],
10                 
11 Mobile = Request.Form["Mobile"], 12 Age = Convert.ToInt32(Request.Form["Age"]) 13 }; 14 _userDao.UpdateUser(user); 15 16 return Content("{'result':'success'}"); 17 }

1. 使用HttpPut来处理请求的时候,除了在客户端(浏览器或其他应用程序)设置Method=PUT外,

还要在HTTP Header中设置Content-Type=application/x-www-form-urlencoded,

否则用Request.Form[ ]来接收参数值的时候是会出错的。

 

2 . 如果Model对象的属性比较多,还可以利用[FromForm]属性获取参数值,

前提是传递过来的参数名称和Model对象的属性名称相同,代码如下:

1         [HttpPut]
2         [Route("{id}")]
3         public ContentResult ModifyUser(int id,[FromForm] User user)
4         { 
5             _userDao.UpdateUser(user);
6 
7             return Content("{'result':'success'}");
8         }

客户端传递过来的参数名必须是Nickname,Email,Mobile,Age等和user.cs中属性名相同的名称(大小写不限),

否则用[FromForm] 修饰的User user对象是获取不到值的。

 

posted @ 2021-01-27 16:37  屏风马  阅读(1045)  评论(0编辑  收藏  举报