本篇實現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} |
用戶修改密碼 |
代碼如下:
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對象是獲取不到值的。