国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【Go實戰(zhàn) | 電商平臺】(6) 用戶信息修改

文章目錄

寫在前面

由于用戶的登錄涉及到了身份這一方面的認證,所以我們就可以通過JWT進行用戶的鑒權(quán),以確認用戶的身份。

1. 路由注冊

  • 編寫用戶更新的請求路由
authed.PUT("user", api.UserUpdate) 

2. 函數(shù)編寫

2.1 service層

  • 定義一個用戶修改的結(jié)構(gòu)體
    只能修改用戶名或是昵稱,修改密碼后續(xù)再說。
//用戶修改信息的服務(wù)
type UserUpdateService struct {
NickName string `form:"nickname" json:"nickname" binding:"required,min=5,max=10"`
UserName string `form:"user_name" json:"user_name" binding:"required,min=5,max=15"`
}
  • 定義用戶信息修改函數(shù)
func (service UserUpdateService) Update(id uint) serializer.Response {...}

2.2 api層

  • 定義一個用戶更新服務(wù)
var userUpdateService service.UserUpdateService
  • 讀取請求頭中Authorization的值
claims,_ := util.ParseToken(c.GetHeader("Authorization"))
  • 綁定這個服務(wù)
c.ShouldBind(&userUpdateService)
  • 調(diào)用這個服務(wù)的update方法
res := userUpdateService.Update(claims.ID)
  • 上下文返回
c.JSON(200, res)
  • api層完整代碼
func UserUpdate(c *gin.Context) {
var userUpdateService service.UserUpdateService
claims,_ := util.ParseToken(c.GetHeader("Authorization"))
if err := c.ShouldBind(&userUpdateService); err == nil {
res := userUpdateService.Update(claims.ID)
c.JSON(200, res)
} else {
c.JSON(200, ErrorResponse(err))
logging.Info(err)
}
}

3. 服務(wù)編寫

  • 根據(jù)Authorization解析出來的id找到該用戶
var user model.User
code := e.SUCCESS
//找到用戶
err := model.DB.First(&user, id).Error
if err != nil {
logging.Info(err)
code = e.ErrorDatabase
return serializer.Response{
Status: code,
Msg:    e.GetMsg(code),
Error:  err.Error(),
}
}
  • 根據(jù)傳送來的信息對用戶的原本信息進行修改
user.Nickname = service.NickName
user.UserName = service.UserName
  • 保存到數(shù)據(jù)庫中
err = model.DB.Save(&user).Error
  • 返回用戶的信息
return serializer.Response{
Status: code,
Data:   serializer.BuildUser(user),
Msg:    e.GetMsg(code),
}
  • 服務(wù)層完整代碼
func (service UserUpdateService) Update(id uint) serializer.Response {
var user model.User
code := e.SUCCESS
//找到用戶
err := model.DB.First(&user, id).Error
if err != nil {
logging.Info(err)
code = e.ErrorDatabase
return serializer.Response{
Status: code,
Msg:    e.GetMsg(code),
Error:  err.Error(),
}
}
user.Nickname = service.NickName
user.UserName = service.UserName
err = model.DB.Save(&user).Error
if err != nil {
logging.Info(err)
code = e.ErrorDatabase
return serializer.Response{
Status: code,
Msg:    e.GetMsg(code),
Error:  err.Error(),
}
}
return serializer.Response{
Status: code,
Data:   serializer.BuildUser(user),
Msg:    e.GetMsg(code),
}
}

4. 驗證

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ANN: DataSnap-like Client-Server JSON RESTful Services in Delphi 7-2010
釘釘免登陸前端操作詳解
實時檢測微信域名防紅攔截檢測API-最新騰訊域名屏蔽檢測官方接口
[系列] Go - 統(tǒng)一定義 API 錯誤碼
node.js 個人博客系統(tǒng)
Golang 單元測試:有哪些誤區(qū)和實踐?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服