This commit is contained in:
Tiger Wang 2022-07-07 12:29:37 -04:00
parent a55a5fe361
commit d3041abcb4
3 changed files with 26 additions and 8 deletions

View File

@ -43,15 +43,27 @@ func InitRouter() *gin.Engine {
// 不正规的方式是 改成 /v1/users/names假定 name 也是资源
r.GET("/v1/user/all/name", v1.GetUserAllUserName)
r.GET("/v1/sys/init/check", v1.GetSystemInitCheck)
r.GET("/v1/guide/check", v1.GetGuideCheck)
r.GET("/v1/debug", v1.GetSystemConfigDebug)
// @tiger - 1不要把同一个词汇按单词来分割。2同领域的 API 应该放在同路径下。
r.GET("/v1/sys/init/check", v1.GetSystemInitCheck) // 这里改成 /v1/sys/init_check
r.GET("/v1/guide/check", v1.GetGuideCheck) // 这里改成 /v1/sys/guide_check
r.GET("/v1/debug", v1.GetSystemConfigDebug) // 这里改成 /v1/sys/debug
// @tiger - 如果遵循 RESTful avatar 本身并不是资源,而是属性;资源是 user
// 所以正规的方法是 改成 /v1/user/:id 然后返回 user 对象,具体 avatar 由前端自行抽取
// 不正规的方式是 改成 /v1/user/:id/avatar假定 avatar 也是资源
r.GET("/v1/user/avatar/:id", v1.GetUserAvatar)
// @tiger - 如果遵循 RESTful image 本身并不是资源,而是属性;资源是 user
// 所以正规的方法是 改成 /v1/user/:id 然后返回 user 对象,具体 image 由前端自行抽取
// 不正规的方式是 改成 /v1/user/:id/image假定 image 也是资源
r.GET("/v1/user/image", v1.GetUserImage)
// @tiger - 不要把同一个词汇按单词来分割,改成 /v1/sys/socket_port
r.GET("/v1/sys/socket/port", v1.GetSystemSocketPort)
// @tiger - nice-to-have开源项目应该删除所有注释代码增加代码整洁性。或者增加注释说明
//r.POST("/v1/user/refresh/token", v1.PostUserRefreshToken)
v1Group := r.Group("/v1")
v1Group.Use(jwt2.JWT())
@ -59,6 +71,7 @@ func InitRouter() *gin.Engine {
v1UserGroup := v1Group.Group("/user")
v1UserGroup.Use()
{
// @tiger - info 一词名没有指定性,容易产生困扰。改成 /current
v1UserGroup.GET("/info", v1.GetUserInfo)
v1UserGroup.PUT("/username", v1.PutUserName)
v1UserGroup.PUT("/password", v1.PutUserPwd)

View File

@ -470,7 +470,7 @@ func GetSystemSocketPort(c *gin.Context) {
model.Result{
Success: common_err.SUCCESS,
Message: common_err.GetMsg(common_err.SUCCESS),
Data: config.ServerInfo.SocketPort,
Data: config.ServerInfo.SocketPort, // @tiger 这里最好封装成 {'port': ...} 的形式,来增加出参的上下文
})
}

View File

@ -188,6 +188,8 @@ func GetUserAvatar(c *gin.Context) {
if user.Id > 0 {
path = user.Avatar
}
// @tiger - RESTful 规范下不应该返回文件本身内容而是返回文件的静态URL由前端去解析
c.File(path)
}
@ -324,13 +326,14 @@ func GetUserInfo(c *gin.Context) {
user := service.MyService.User().GetUserInfoById(id)
//*****
// @tiger - 应该和 PostUserLogin 中的 user 对象一致。而不是重构一系列字段。
var u = make(map[string]string, 5)
u["user_name"] = user.UserName
u["head"] = user.Avatar
u["user_name"] = user.UserName // 改成 username
u["head"] = user.Avatar // 应该和 /v1/user/avatar/:id 一致,改成 avatar
u["email"] = user.Email
u["description"] = user.NickName
u["nick_name"] = user.NickName
u["id"] = strconv.Itoa(user.Id)
u["nick_name"] = user.NickName // 改成 nickname
u["id"] = strconv.Itoa(user.Id) // (nice-to-have) 最佳实践是用随机字符来代表 ID。顺序数字有可预测性
//**
@ -596,6 +599,8 @@ func GetUserImage(c *gin.Context) {
defer fileTmp.Close()
fileName := path.Base(filePath)
// @tiger - RESTful 规范下不应该返回文件本身内容而是返回文件的静态URL由前端去解析
c.Header("Content-Disposition", "attachment; filename*=utf-8''"+url2.PathEscape(fileName))
c.File(filePath)
}