讨论

RESTful API 设计蓝图生成器

来自 Wikiprompt,自由的提示词百科全书

Lautaro Schiaffino

2025年12月28日

RESTful API 设计蓝图生成器 生成一份完整的 API 设计文档,包括端点(endpoint)、请求/响应结构、错误处理、身份验证以及 OpenAPI 规范。

提示词内容收藏

🌐
你是一位API架构师,曾为Stripe、Twilio、GitHub等公司设计过被数百万开发者使用的API。你设计的API以直观、一致、对开发者友好而著称。你遵循REST最佳实践,同时对现实需求保持务实。 我需要你为以下内容设计一个完整的API: ## 项目需求 API用途:[描述这个API是做什么的] 目标用户:[谁会使用这个API] 核心资源:[列出主要实体,例如 Users, Products, Orders] 认证方式:[API KEY / OAuth 2.0 / JWT / 等] 预期规模:[每秒请求数 / 用户数量] ## 生成一份完整的API设计文档: ### 1. API概览 - API名称与版本(例如 v1) - 基础URL结构建议 - Content-Type(默认JSON,需注明例外情况) - API风格(REST,如需要可说明RPC风格的端点) - 限流(rate limiting)策略建议 ### 2. 身份验证与授权 设计认证系统: - 认证方式细节 - Token格式与生命周期 - 刷新token(refresh token)策略(如适用) - 权限范围(scope)/权限模型 - 认证请求头示例 ``` Authorization: Bearer <token> X-API-Key: <api_key> ``` ### 3. 资源设计 为每个核心资源定义: #### 资源:[名称] - 描述 - 与其他资源的关系 - 唯一标识符格式(UUID、slug、自增ID) **端点(Endpoints):** ``` GET /[resources] - List all (with pagination) GET /[resources]/:id - Get single resource POST /[resources] - Create new resource PUT /[resources]/:id - Full update PATCH /[resources]/:id - Partial update DELETE /[resources]/:id - Delete resource ``` **数据结构(Schema):** ```json { "id": "string (uuid)", "created_at": "string (ISO 8601)", "updated_at": "string (ISO 8601)", // ... resource-specific fields } ``` **字段定义表:** | 字段 | 类型 | 是否必填 | 描述 | 约束 | |------|------|----------|------|------| ### 4. 请求/响应格式 **标准成功响应:** ```json { "data": { ... }, "meta": { "request_id": "req_abc123", "timestamp": "2024-01-15T10:30:00Z" } } ``` **列表响应(带分页):** ```json { "data": [ ... ], "pagination": { "total": 100, "page": 1, "per_page": 20, "total_pages": 5, "next_cursor": "eyJpZCI6MTAwfQ==", "has_more": true }, "meta": { ... } } ``` **列表查询参数:** - `page` / `cursor` - 分页 - `per_page` / `limit` - 每页条数(最大100) - `sort` - 排序字段 - `order` - asc/desc(升序/降序) - `filter[field]` - 过滤 - `include` - 需要嵌入的关联资源 - `fields` - 稀疏字段集(Sparse fieldsets) ### 5. 错误处理 **错误响应格式:** ```json { "error": { "code": "VALIDATION_ERROR", "message": "Human readable message", "details": [ { "field": "email", "code": "INVALID_FORMAT", "message": "Email must be a valid email address" } ], "request_id": "req_abc123", "documentation_url": "https://api.example.com/docs/errors#VALIDATION_ERROR" } } ``` **标准错误代码:** | HTTP状态码 | 错误代码 | 描述 | |------------|----------|------| | 400 | VALIDATION_ERROR | 请求验证失败 | | 401 | UNAUTHORIZED | 缺少认证或认证无效 | | 403 | FORBIDDEN | 认证有效但权限不足 | | 404 | NOT_FOUND | 资源不存在 | | 409 | CONFLICT | 资源状态冲突 | | 422 | UNPROCESSABLE | 语法有效但存在语义错误 | | 429 | RATE_LIMITED | 请求过于频繁 | | 500 | INTERNAL_ERROR | 服务器错误 | ### 6. 版本控制策略 - URL版本控制:`/v1/resources` - Header版本控制选项:`API-Version: 2024-01-15` - 弃用(deprecation)策略 - 迁移指南模板 ### 7. 分页设计 选择并记录: - 基于偏移量(offset):`?page=2&per_page=20` - 基于游标(cursor):`?cursor=eyJpZCI6MTAwfQ==` - Keyset:`?after_id=100` 说明所选方案的优缺点。 ### 8. 过滤与搜索 设计查询模式: ``` GET /products?filter[category]=electronics GET /products?filter[price][gte]=100&filter[price][lte]=500 GET /products?search=keyword GET /products?status=active,pending ``` ### 9. 限流(RATE LIMITING) - 限流等级(按套餐/认证级别划分) - 需返回的响应头: - `X-RateLimit-Limit` - `X-RateLimit-Remaining` - `X-RateLimit-Reset` - 429状态码下的Retry-After响应头 ### 10. WEBHOOKS(如适用) - 事件类型 - Payload格式 - 签名验证 - 重试策略 ### 11. OPENAPI规范 为核心端点生成OpenAPI 3.0 YAML: ```yaml openapi: 3.0.0 info: title: [API Name] version: 1.0.0 paths: /[resource]: get: summary: List [resources] # ... complete specification ``` ### 12. SDK相关考量 - 推荐的SDK设计模式 - 不同语言的惯用命名方式 - 错误处理预期 - 分页辅助工具(helpers) 确保所有设计遵循行业标准、保持一致。请说明设计决策背后的理由,并为关键端点提供curl示例。

登录以查看完整提示词

继续使用:

登录即表示你同意我们的 使用条款 和 隐私政策

用法

此提示词专为 coding 设计。复制上方内容并粘贴到你常用的 AI 工具中。

为获得最佳效果,可将占位符(方括号或大写字母标示)替换为你的具体需求。

参考资料

分类:coding| api| rest| backend

讨论