route.ts

route.ts

基本信息

  • 类型: API 路由
  • 路径: ./src/app/api/user/profile/route.ts
  • 路由: /api/user/profile

概述

用户资料管理接口。支持获取当前用户资料和更新资料信息。

HTTP 方法

  • GET: 获取用户资料
  • PATCH: 更新用户资料

GET - 获取用户资料

响应

成功 (200)

{
  "id": "user_id",
  "name": "用户名称",
  "username": "username",
  "email": "user@example.com",
  "avatar": "https://...",
  "role": "USER",
  "createdAt": "2024-01-01T00:00:00Z"
}

未授权 (401)

{
  "error": "unauthorized",
  "message": "You must be logged in"
}

未找到 (404)

{
  "error": "not_found",
  "message": "User not found"
}

PATCH - 更新用户资料

Body 参数

参数类型必填说明
namestring显示名称,1-100 字符
usernamestring用户名,1-30 字符,只允许字母、数字、下划线
avatarstring头像 URL
biostring个人简介,最多 250 字符
customLinksarray自定义链接,最多 5 个
{
  type: "website" | "github" | "twitter" | "linkedin" | "instagram" | 
        "youtube" | "twitch" | "discord" | "mastodon" | "bluesky" | "sponsor",
  url: string,     // 链接 URL
  label?: string   // 可选标签,最多 30 字符
}

响应

成功 (200)

返回更新后的用户资料

错误

未授权 (401)
{
  "error": "unauthorized",
  "message": "You must be logged in"
}
验证失败 (400)
{
  "error": "validation_error",
  "message": "Invalid input",
  "details": [...]
}
用户名已被使用 (400)
{
  "error": "username_taken",
  "message": "This username is already taken"
}
服务器错误 (500)
{
  "error": "server_error",
  "message": "Something went wrong"
}

依赖

  • next/server - Next.js 服务器组件
  • zod - 输入验证
  • @prisma/client - Prisma 客户端
  • @/lib/auth - 认证
  • @/lib/db - Prisma 数据库客户端

权限

  • 需要登录
  • 用户只能修改自己的资料

验证规则

  1. 用户名只能包含字母、数字和下划线
  2. 自定义链接最多 5 个
  3. 链接类型必须是预定义类型之一
  4. 所有 URL 必须是有效的 URL 格式
← 返回目录