POST /api/auth/signup
Content-Type: application/json请求体:
{
"Username": "string", // 必须,唯一
"Password": "string", // 必须
"UserType": "string" // 必须,值: "user" 或 "admin"
}响应:
{
"Token": "string"
}状态码:
- 200: 注册成功
- 400: 请求参数错误
- 409: 用户名已存在
- 403: 尝试创建root用户
POST /api/auth/signin
Content-Type: application/json请求体:
{
"Username": "string", // 必须
"Password": "string" // 必须
}响应: 同注册接口
状态码:
- 200: 登录成功
- 401: 用户名或密码错误
POST /api/auth/delete
Authorization: Bearer <token>
Content-Type: application/json请求体:
{
"Username": "string" // 必须
}状态码:
- 200: 删除成功
- 401: Token无效或不匹配
- 403: 不能删除root账户
POST /api/auth/logout
Authorization: Bearer <token>状态码:
- 200: 登出成功
- 401: Token无效
GET /api/profile/{username}响应: ProfileDto 对象
状态码:
- 200: 成功
- 404: 用户不存在
PUT /api/profile/{username}
Authorization: Bearer <token>
Content-Type: application/json请求体: ProfileDto 对象
响应:
{
"success": true
}状态码:
- 200: 成功
- 401: Token无效或不匹配
- 404: 用户不存在
GET /api/profile/me
Authorization: Bearer <token>响应: ProfileDto 对象
状态码:
- 200: 成功
- 401: Token无效
- 404: 资料不存在
GET /api/admin/permission
Authorization: Bearer <token>响应:
{
"success": true,
"type": "string" // "admin" 或 "root"
}状态码:
- 200: 成功
- 401: Token无效
- 403: 权限不足
GET /api/admin/users
Authorization: Bearer <token>响应:
{
"Users": [
{
"Username": "string",
"Type": "string"
}
]
}状态码:
- 200: 成功
- 401: Token无效
- 403: 权限不足
POST /api/admin/users
Authorization: Bearer <token>
Content-Type: application/json请求体:
{
"NewUsername": "string", // 必须
"Password": "string", // 必须
"Type": "string" // 必须,值: "user" 或 "admin"
}响应:
{
"Token": "string"
}状态码:
- 200: 成功
- 400: 请求参数错误
- 401: Token无效
- 403: 权限不足
- 409: 用户名已存在
DELETE /api/admin/users/{username}
Authorization: Bearer <token>状态码:
- 200: 成功
- 400: 不能删除自己的账户
- 401: Token无效
- 403: 权限不足或不能删除root账户
- 404: 用户不存在
POST /classic/signup/create
Content-Type: application/json请求体:
{
"userName": "string", // 必须,唯一
"password": "string", // 必须
"type": "string" // 必须,值: "user" 或 "admin"
}响应:
{
"token": "string"
}POST /classic/signin
Content-Type: application/json请求体:
{
"userName": "string", // 必须
"password": "string" // 必须
}响应: 同注册接口
POST /classic/delete
Content-Type: application/json请求体:
{
"userName": "string", // 必须
"token": "string" // 必须
}响应:
{
"message": "string"
}GET /classic/user/{username}响应: ClassicProfile 对象
POST /classic/user/{username}
Authorization: Bearer <token>
Content-Type: application/json请求体: ClassicProfile 对象
响应:
{
"success": true
}POST /classic/admin/check-permission
Content-Type: application/json请求体:
{
"userName": "string", // 必须
"token": "string" // 必须
}响应:
{
"success": true,
"type": "string" // "admin" 或 "root"
}GET /classic/admin/users注意: 需要在Header或Body中传递token和username
POST /classic/admin/users
Content-Type: application/json请求体:
{
"userName": "string", // 管理员用户名
"token": "string", // 管理员令牌
"newUserName": "string", // 新用户名
"password": "string", // 新用户密码
"type": "string" // 新用户类型,值: "user" 或 "admin"
}响应:
{
"message": "string",
"token": "string" // 新用户的令牌
}DELETE /classic/admin/users/{targetUsername}
Content-Type: application/json请求体:
{
"userName": "string", // 管理员用户名
"token": "string" // 管理员令牌
}响应:
{
"message": "string"
}GET /classic/init-admin响应: 字符串 "Admin initialized" 或 "Admin already initialized"
{
"Username": "string",
"Password": "string",
"UserType": "string"
}{
"Username": "string",
"Password": "string"
}{
"Username": "string"
}{
"Token": "string"
}{
"Username": "string",
"Avatar": AssetDto,
"NickName": "string",
"Pronouns": "string",
"Description": "string",
"Location": "string",
"Website": "string",
"Background": AssetDto,
"CurrentCompany": "string",
"CurrentCompanyLink": "string",
"CurrentSchool": "string",
"CurrentSchoolLink": "string",
"Contacts": [ContactItemDto],
"SocialLinks": [SocialLinkItemDto],
"Projects": [ProjectItemDto],
"WorkExperiences": [WorkExperienceItemDto],
"SchoolExperiences": [SchoolExperienceItemDto],
"Gallery": [GalleryItemDto]
}{
"Type": "string", // "Text", "Image", "Remote", "Style"
"Text": "string",
"DataBase64": "string"
}{
"Type": "string",
"Text": "string",
"Image": AssetDto
}{
"Type": "string",
"Value": "string",
"Attributes": {
"key": "value"
}
}{
"Name": "string",
"Url": "string",
"Description": "string",
"Logo": AssetDto
}{
"Company": "string",
"CompanyUrl": "string",
"Position": "string",
"StartDate": "string", // yyyy-MM-dd
"EndDate": "string", // yyyy-MM-dd
"Description": "string",
"Logo": AssetDto
}{
"School": "string",
"SchoolLink": "string",
"Degree": "string",
"Major": "string",
"StartDate": "string", // yyyy-MM-dd
"EndDate": "string", // yyyy-MM-dd
"Description": "string",
"Logo": AssetDto
}{
"Image": AssetDto,
"Caption": "string"
}{
"NewUsername": "string",
"Password": "string",
"Type": "string"
}{
"Username": "string",
"Type": "string"
}{
"Users": [UserInfoDto]
}{
"userName": "string",
"password": "string",
"type": "string"
}{
"userName": "string",
"password": "string"
}{
"userName": "string",
"token": "string"
}{
"token": "string"
}{
"username": "string",
"name": "string",
"pronouns": "string",
"avatar": "string", // Base64 Data URI / URL / Text
"bio": "string",
"location": "string",
"website": "string",
"background": "string", // Base64 Data URI / URL / Text
"currentCompany": "string",
"currentCompanyLink": "string",
"currentSchool": "string",
"currentSchoolLink": "string",
"contacts": [ClassicContact],
"socialLinks": [ClassicSocialLink],
"projects": [ClassicProject],
"workExperiences": [ClassicWorkExperience],
"schoolExperiences": [ClassicSchoolExperience],
"gallery": [ClassicGalleryItem]
}{
"type": "string",
"value": "string" // 文本或Base64 Data URI
}{
"type": "string",
"value": "string",
"githubData": {
// 任意键值对
}
}{
"name": "string",
"url": "string",
"description": "string",
"logo": "string" // Base64 Data URI / URL
}{
"position": "string",
"company": "string",
"companyLink": "string",
"startDate": "string", // yyyy-MM-dd
"endDate": "string", // yyyy-MM-dd
"description": "string",
"logo": "string" // Base64 Data URI / URL
}{
"school": "string",
"schoolLink": "string",
"degree": "string",
"major": "string",
"startDate": "string", // yyyy-MM-dd
"endDate": "string", // yyyy-MM-dd
"description": "string",
"logo": "string" // Base64 Data URI / URL
}{
"image": "string", // Base64 Data URI
"caption": "string"
}{
"userName": "string",
"token": "string"
}{
"userName": "string",
"token": "string",
"newUserName": "string",
"password": "string",
"type": "string"
}{
"userName": "string",
"type": "string"
}{
"users": [ClassicUserInfo]
}