route.ts
基本信息
- 类型: API 路由
- 路径:
./src/app/api/auth/register/route.ts - 路由:
/api/auth/register
概述
用户注册接口。允许新用户创建账户,支持邮箱/密码注册。包含输入验证、重复检查(邮箱和用户名)、密码加密等功能。
HTTP 方法
- POST: 创建新用户账户
请求参数
Body
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 用户显示名称,至少2个字符 |
| username | string | 是 | 用户名,只允许字母、数字和下划线 |
| string | 是 | 邮箱地址,需符合邮箱格式 | |
| password | string | 是 | 密码,至少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- 应用配置
权限
- 公开访问(但需检查配置中是否允许注册)
注意事项
- 密码使用 bcrypt 加密,salt rounds 为 12
- 用户名检查不区分大小写
- 注册前会检查
config.auth.allowRegistration配置