4.5 KiB
4.5 KiB
短链接生成API Spec
Why
当前系统缺少短链接生成功能,用户无法将长URL转换为便于分享的短链接。需要开发短链接生成API后端及前端API详情页,提供链接缩短、自定义短码、过期设置和点击统计能力。
What Changes
后端变更
- 新增
shorturl/Django应用,实现短链接生成和管理API - 使用自增ID+Base62编码生成短码,支持自定义短码
- 数据模型存储:短码、原始URL、自定义短码、过期时间、创建者、点击次数
- 支持链接过期和访问次数统计
- 添加Swagger文档支持
- 注册URL路由
/api/shorturl/
前端变更
- 新增
ShortUrlDetail页面,提供API文档和在线测试功能 - 包含API文档标签页和在线测试标签页
- 支持输入长URL、自定义短码、设置过期时间
- 显示生成的短链接和二维码
- 添加路由配置
Impact
- Affected specs: 无
- Affected code:
chunyu_project/shorturl/(新增Django应用)chunyu_project/api/urls.py(修改,添加shorturl路由)chunyu_project_react/src/pages/ShortUrlDetail/(新增)chunyu_project_react/src/utils/request.ts(修改,添加shorturl API)chunyu_project_react/src/App.tsx(修改,添加路由)
ADDED Requirements
Requirement: 短链接生成API
系统SHALL提供短链接生成API,支持将长URL转换为短链接。
Scenario: 成功生成短链接
- WHEN 用户发送 POST 请求到
/api/shorturl/shorten/,携带有效的url参数 - THEN 系统返回 200 状态码及生成的短链接信息(短码、短链接URL、原始URL、过期时间)
Scenario: 自定义短码
- WHEN 用户发送 POST 请求时携带
custom_code参数 - THEN 系统使用用户指定的短码,若已被占用则返回 409 冲突错误
Scenario: 设置过期时间
- WHEN 用户发送 POST 请求时携带
expire_days参数 - THEN 系统记录该短链接的过期时间
Scenario: URL格式校验
- WHEN 用户发送 POST 请求时携带无效的URL格式
- THEN 系统返回 400 错误提示
Scenario: 短码已存在
- WHEN 用户自定义的短码已被其他链接使用
- THEN 系统返回 409 错误及提示信息
Requirement: 短链接解析API
系统SHALL提供短链接解析API,支持通过短码获取原始URL信息。
Scenario: 查询短链接信息
- WHEN 用户发送 GET 请求到
/api/shorturl/info/<code>/ - THEN 系统返回该短码对应的原始URL、创建时间、点击次数、过期时间
Scenario: 短码不存在
- WHEN 用户查询不存在的短码
- THEN 系统返回 404 错误
Requirement: 短链接重定向
系统SHALL提供短链接重定向功能。
Scenario: 访问有效短链接
- WHEN 用户访问
/s/<code>/ - THEN 系统将用户重定向到原始URL,并将点击次数加1
Scenario: 短链接已过期
- WHEN 用户访问已过期的短链接
- THEN 系统返回 410 Gone 错误页面
Requirement: 链接列表API
系统SHALL提供用户创建的短链接列表查询API。
Scenario: 查询链接列表
- WHEN 已登录用户发送 GET 请求到
/api/shorturl/list/ - THEN 系统返回当前用户创建的所有短链接列表(分页)
Scenario: 匿名用户查询
- WHEN 未登录用户发送 GET 请求到
/api/shorturl/list/ - THEN 系统返回 401 错误,提示需要登录
Requirement: 前端API详情页
系统SHALL提供短链接生成API的前端详情页。
Scenario: 查看API文档
- WHEN 用户访问短链接API详情页
- THEN 系统显示API接口文档,包含请求参数、响应示例、错误码说明
Scenario: 在线生成短链接
- WHEN 用户在测试页面输入长URL和可选参数,点击生成
- THEN 系统向
/api/shorturl/shorten/发起真实请求并显示生成的短链接
Scenario: 复制短链接
- WHEN 用户点击复制按钮
- THEN 生成的短链接被复制到剪贴板
Requirement: API文档集成
短链接API SHALL自动集成到Swagger API文档中。
Scenario: Swagger文档显示
- WHEN 管理员访问
/swagger/ - THEN 短链接API出现在API文档列表中
MODIFIED Requirements
Requirement: 前端路由
前端路由SHALL包含新的短链接详情页路由。
Scenario: 访问短链接详情页
- WHEN 用户访问
/shorturl-detail - THEN 系统显示短链接生成API详情页
REMOVED Requirements
无