route.ts

route.ts

基本信息

  • 类型: API 路由
  • 路径: ./src/app/api/auth/register/route.ts
  • 路由: /api/auth/register

概述

用户注册接口。允许新用户创建账户,支持邮箱/密码注册。包含输入验证、重复检查(邮箱和用户名)、密码加密等功能。

HTTP 方法

  • POST: 创建新用户账户

请求参数

Body

参数类型必填说明
namestring用户显示名称,至少2个字符
usernamestring用户名,只允许字母、数字和下划线
emailstring邮箱地址,需符合邮箱格式
passwordstring密码,至少6个字符

请求示例

{
  "name": "张三",
  "username": "zhangsan",
  "email": "zhangsan@example.com",
  "password": "password123"
}

响应

成功 (200)

{
  "id": "user_id",
  "name": "张三",
  "username": "zhangsan",
  "email": "zhangsan@example.com"
}

错误

注册已禁用 (403)

{
  "error": "registration_disabled",
  "message": "Registration is disabled"
}

验证失败 (400)

{
  "error": "validation_error",
  "message": "Invalid input"
}

邮箱已被使用 (400)

{
  "error": "email_taken",
  "message": "Email is already taken"
}

用户名已被使用 (400)

{
  "error": "username_taken",
  "message": "Username is already taken"
}

服务器错误 (500)

{
  "error": "server_error",
  "message": "Something went wrong"
}

依赖

  • next/server - Next.js 服务器组件
  • bcryptjs - 密码加密
  • zod - 输入验证
  • @/lib/db - Prisma 数据库客户端
  • @/lib/config - 应用配置

权限

  • 公开访问(但需检查配置中是否允许注册)

注意事项

  1. 密码使用 bcrypt 加密,salt rounds 为 12
  2. 用户名检查不区分大小写
  3. 注册前会检查 config.auth.allowRegistration 配置
← 返回目录