.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對象是獲取不到值的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM