127 lines
3.4 KiB
Plaintext
127 lines
3.4 KiB
Plaintext
syntax = "v1"
|
|
|
|
info (
|
|
author: "Asadz"
|
|
date: "2024-06-19"
|
|
version: "1.0"
|
|
)
|
|
|
|
type (
|
|
RegisterReq {
|
|
Username string `json:"username" binding:"required,min=3,max=50"`
|
|
Password string `json:"password" binding:"required,min=6,max=128"`
|
|
Email string `json:"email,omitempty" binding:"omitempty,email"`
|
|
Phone string `json:"phone,omitempty" binding:"omitempty,len=11"`
|
|
Vcode int32 `json:"vcode"`
|
|
}
|
|
RegisterResp {
|
|
UserId int64 `json:"userId"`
|
|
Username string `json:"username"`
|
|
Email string `json:"email"`
|
|
Message string `json:"message"`
|
|
}
|
|
LoginReq {
|
|
Username string `json:"username" binding:"required"`
|
|
Password string `json:"password" binding:"required"`
|
|
}
|
|
LoginResp {
|
|
UserId int64 `json:"userId"`
|
|
Username string `json:"username"`
|
|
Email string `json:"email"`
|
|
Token string `json:"token"`
|
|
Expires int64 `json:"expires"`
|
|
}
|
|
GetUserInfoReq {
|
|
UserId int64 `path:"userId" binding:"required,gt=0"`
|
|
}
|
|
UserInfo {
|
|
UserId int64 `json:"userId"`
|
|
Username string `json:"username"`
|
|
Email string `json:"email"`
|
|
Phone string `json:"phone"`
|
|
Avatar string `json:"avatar"`
|
|
Status int `json:"status"`
|
|
CreateAt int64 `json:"createAt"`
|
|
UpdateAt int64 `json:"updateAt"`
|
|
}
|
|
UpdateUserInfoReq {
|
|
UserId int64 `path:"userId" binding:"required,gt=0"`
|
|
Email string `json:"email" binding:"omitempty,email"`
|
|
Phone string `json:"phone" binding:"omitempty,len=11"`
|
|
Avatar string `json:"avatar" binding:"omitempty,url"`
|
|
}
|
|
UpdateUserInfoResp {
|
|
UserId int64 `json:"userId"`
|
|
Message string `json:"message"`
|
|
}
|
|
UpdatePasswordReq {
|
|
UserId int64 `path:"userId" binding:"required,gt=0"`
|
|
OldPassword string `json:"oldPassword" binding:"required"`
|
|
NewPassword string `json:"newPassword" binding:"required,min=6,max=128"`
|
|
}
|
|
UpdatePasswordResp {
|
|
Message string `json:"message"`
|
|
}
|
|
LogoutReq {
|
|
UserId int64 `path:"userId" binding:"required,gt=0"`
|
|
Token string `header:"Authorization" binding:"required"`
|
|
}
|
|
LogoutResp {
|
|
Message string `json:"message"`
|
|
}
|
|
ErrorResp {
|
|
Code int `json:"code"`
|
|
Message string `json:"message"`
|
|
}
|
|
)
|
|
|
|
@server (
|
|
group: user
|
|
prefix: /api/users
|
|
middleware: Logger
|
|
)
|
|
service user-api {
|
|
@doc (
|
|
summary: "用户注册接口"
|
|
description: "通过用户名、密码、邮箱、电话号码注册新用户账户"
|
|
)
|
|
@handler Register
|
|
post /register (RegisterReq) returns (RegisterResp)
|
|
|
|
@doc (
|
|
summary: "用户登录接口"
|
|
description: "使用用户名和密码进行登录,返回访问令牌和用户信息"
|
|
)
|
|
@handler Login
|
|
post /login (LoginReq) returns (LoginResp)
|
|
|
|
@doc (
|
|
summary: "获取用户信息"
|
|
description: "根据用户ID获取用户的详细信息,包含个人资料和账户状态"
|
|
)
|
|
@handler GetUserInfo
|
|
get /:userId (GetUserInfoReq) returns (UserInfo)
|
|
|
|
@doc (
|
|
summary: "修改用户信息"
|
|
description: "修改用户的邮箱、电话号码、头像等信息"
|
|
)
|
|
@handler UpdateUserInfo
|
|
put /:userId (UpdateUserInfoReq) returns (UpdateUserInfoResp)
|
|
|
|
@doc (
|
|
summary: "修改用户密码"
|
|
description: "验证旧密码后修改为新密码,需要提供原密码"
|
|
)
|
|
@handler UpdatePassword
|
|
put /:userId/password (UpdatePasswordReq) returns (UpdatePasswordResp)
|
|
|
|
@doc (
|
|
summary: "用户登出"
|
|
description: "需要携带 Authorization 令牌,清除用户会话并使令牌失效"
|
|
)
|
|
@handler Logout
|
|
post /:userId/logout (LogoutReq) returns (LogoutResp)
|
|
}
|
|
|