PRD接口清单怎么写:请求参数/响应结构/错误码(附接口文档模板)

前言

接口文档是前后端协作的基础。很多联调问题都是因为接口文档不清楚:参数类型不明确、响应结构不完整、错误码没定义。这篇给你完整的接口文档模板。

一、接口文档模板

接口名称:创建订单 接口路径:POST /api/orders 接口描述:创建新订单 权限要求:登录用户 请求头: - Content-Type: application/json - Authorization: Bearer {token} 请求参数: { "goods_id": 123, // 商品ID,必填,整数 "quantity": 2, // 购买数量,必填,整数,≥1 "address_id": 456, // 收货地址ID,必填,整数 "coupon_id": 789, // 优惠券ID,选填,整数 "remark": "请尽快发货" // 备注,选填,字符串,≤200字符 } 响应结构(成功): { "code": 200, "message": "创建成功", "data": { "order_id": "202312010001", "order_no": "ORD202312010001", "total_amount": 199.00, "created_at": "2023-12-01 10:00:00" } } 响应结构(失败): { "code": 400, "message": "库存不足", "data": null } 错误码: - 200:成功 - 400:参数错误 - 401:未登录 - 403:无权限 - 404:商品不存在 - 500:系统错误

二、请求参数规范

参数名类型必填说明示例
goods_id整数商品ID123
quantity整数购买数量,≥12
address_id整数收货地址ID456
coupon_id整数优惠券ID789
remark字符串备注,≤200字符请尽快发货

三、响应结构规范

统一响应格式: { "code": 200, // 状态码 "message": "成功", // 提示信息 "data": {} // 业务数据 } 分页响应格式: { "code": 200, "message": "成功", "data": { "list": [], // 数据列表 "total": 100, // 总条数 "page": 1, // 当前页 "page_size": 20 // 每页条数 } }

四、错误码规范

错误码说明HTTP状态码
200成功200
400参数错误400
401未登录401
403无权限403
404资源不存在404
500系统错误500

五、接口文档编写步骤

步骤1:梳理接口需求

在编写接口文档前,需要梳理接口需求:

  1. 明确业务场景:接口要解决什么业务问题
  2. 确定接口功能:接口要实现什么功能
  3. 识别输入输出:需要什么输入,返回什么数据
  4. 分析异常情况:可能出现的异常情况

在梳理接口需求时,可以使用思维导图工具来整理接口结构和参数关系,比如使用AI思维导图工具,输入业务场景和功能需求,自动生成结构化的接口设计思维导图,帮助快速梳理接口结构和参数。

步骤2:设计接口结构

根据业务需求,设计接口结构:

  • 接口路径:RESTful风格,清晰表达资源和方法
  • 请求方法:GET、POST、PUT、DELETE等
  • 请求参数:必填参数、选填参数、参数类型、参数说明
  • 响应结构:成功响应、失败响应、数据结构

步骤3:定义错误码

定义统一的错误码规范:

  • 成功码:200表示成功
  • 客户端错误:400-499表示客户端错误
  • 服务端错误:500-599表示服务端错误
  • 业务错误:自定义业务错误码

步骤4:编写接口文档

使用标准模板编写接口文档:

  • 接口基本信息:名称、路径、方法、描述
  • 请求参数:参数名、类型、必填、说明、示例
  • 响应结构:成功响应、失败响应、数据结构
  • 错误码:错误码、说明、HTTP状态码

步骤5:评审和优化

接口文档编写完成后,进行评审和优化:

  • 内部评审:产品、前端、后端一起评审
  • 查漏补缺:检查是否有遗漏的参数或场景
  • 优化完善:根据评审意见优化文档

六、实际案例详解

案例1:电商订单创建接口

业务场景:用户下单时,前端调用接口创建订单。

接口文档:

接口名称:创建订单 接口路径:POST /api/v1/orders 接口描述:用户下单,创建新订单 权限要求:登录用户 请求头: - Content-Type: application/json - Authorization: Bearer {token} 请求参数: { "goods_list": [ // 商品列表,必填,数组 { "goods_id": 123, // 商品ID,必填,整数 "quantity": 2, // 购买数量,必填,整数,≥1 "sku_id": 456 // SKU ID,选填,整数 } ], "address_id": 789, // 收货地址ID,必填,整数 "payment_method": "alipay", // 支付方式,必填,字符串,枚举:alipay/wechat/bank "coupon_id": 101, // 优惠券ID,选填,整数 "remark": "请尽快发货" // 备注,选填,字符串,≤200字符 } 响应结构(成功): { "code": 200, "message": "创建成功", "data": { "order_id": "202312010001", "order_no": "ORD202312010001", "total_amount": 199.00, "freight_amount": 10.00, "coupon_amount": 20.00, "paid_amount": 189.00, "created_at": "2023-12-01 10:00:00", "payment_url": "https://pay.example.com/order/202312010001" } } 响应结构(失败): { "code": 400, "message": "库存不足", "data": null } 错误码: - 200:成功 - 400:参数错误(如:商品ID不存在、数量不足等) - 401:未登录 - 403:无权限 - 404:商品不存在 - 500:系统错误

关键点:

  • 参数类型明确:goods_list是数组,包含对象
  • 参数约束清晰:quantity≥1,remark≤200字符
  • 响应结构完整:包含订单所有关键信息
  • 错误码明确:覆盖所有可能的错误情况

案例2:CRM客户列表查询接口

业务场景:销售查看客户列表,支持分页和筛选。

接口文档:

接口名称:查询客户列表 接口路径:GET /api/v1/customers 接口描述:分页查询客户列表,支持筛选和排序 权限要求:登录用户 请求头: - Authorization: Bearer {token} 请求参数(Query参数): - page: 页码,选填,整数,默认1,≥1 - page_size: 每页条数,选填,整数,默认20,范围1-100 - keyword: 关键词,选填,字符串,搜索客户名称、联系人 - status: 客户状态,选填,字符串,枚举:正常/停用/删除 - source: 客户来源,选填,字符串,枚举:线上/线下/转介绍 - sort: 排序字段,选填,字符串,默认created_at,枚举:created_at/name/amount - order: 排序方式,选填,字符串,默认desc,枚举:asc/desc 响应结构(成功): { "code": 200, "message": "查询成功", "data": { "list": [ { "customer_id": 1, "customer_name": "XX公司", "contact_name": "张三", "contact_phone": "138****5678", "status": "正常", "source": "线上", "amount": 100000.00, "created_at": "2023-12-01 10:00:00" } ], "total": 100, "page": 1, "page_size": 20, "total_pages": 5 } } 响应结构(失败): { "code": 400, "message": "参数错误:page_size不能超过100", "data": null } 错误码: - 200:成功 - 400:参数错误(如:page_size超过100、sort字段不存在等) - 401:未登录 - 403:无权限 - 500:系统错误

关键点:

  • 分页参数明确:page、page_size、默认值、取值范围
  • 筛选参数完整:支持多维度筛选
  • 排序参数清晰:支持多字段排序
  • 响应结构规范:统一的分页响应格式

案例3:文件上传接口

业务场景:用户上传头像、商品图片等文件。

接口文档:

接口名称:上传文件 接口路径:POST /api/v1/files/upload 接口描述:上传文件(图片、文档等) 权限要求:登录用户 请求头: - Content-Type: multipart/form-data - Authorization: Bearer {token} 请求参数(Form Data): - file: 文件,必填,文件类型 - 支持格式:jpg/jpeg/png/gif/pdf/doc/docx - 文件大小:≤10MB - 图片尺寸:≤5000x5000 - type: 文件类型,必填,字符串,枚举:avatar/goods/document - description: 文件描述,选填,字符串,≤200字符 响应结构(成功): { "code": 200, "message": "上传成功", "data": { "file_id": "202312010001", "file_name": "avatar.jpg", "file_url": "https://cdn.example.com/files/202312010001.jpg", "file_size": 102400, "file_type": "image/jpeg", "uploaded_at": "2023-12-01 10:00:00" } } 响应结构(失败): { "code": 400, "message": "文件格式不支持", "data": null } 错误码: - 200:成功 - 400:参数错误(如:文件格式不支持、文件过大等) - 401:未登录 - 403:无权限 - 413:文件过大 - 500:系统错误

关键点:

  • 文件约束明确:格式、大小、尺寸限制
  • 请求方式正确:multipart/form-data
  • 响应信息完整:包含文件URL、大小、类型等
  • 错误处理完善:覆盖各种错误情况

七、常见错误及解决方案

错误1:参数类型不明确

表现:参数类型写"字符串",但没有说明具体格式。

示例:日期参数写"字符串",但没有说明是"YYYY-MM-DD"还是"YYYY/MM/DD"。

解决方案:

  • 明确参数类型:整数、字符串、数组、对象等
  • 说明格式要求:日期格式、时间格式、枚举值等
  • 提供示例:给出具体的示例值

错误2:响应结构不完整

表现:响应结构只写了主要字段,遗漏了重要字段。

示例:订单接口响应只写了订单号,没有写订单金额、状态等。

解决方案:

  • 列出所有字段:包括主要字段和辅助字段
  • 说明字段含义:每个字段的业务含义
  • 提供完整示例:包含所有字段的完整响应示例

错误3:错误码未定义

表现:接口文档中没有定义错误码,前端不知道如何处理错误。

示例:接口可能返回400、401、403、404、500等错误码,但文档中没有说明。

解决方案:

  • 定义所有错误码:列出所有可能的错误码
  • 说明错误原因:每个错误码对应的错误原因
  • 提供错误示例:给出错误响应的示例

错误4:参数约束不明确

表现:参数有约束(如长度、范围),但文档中没有说明。

示例:备注字段最大200字符,但文档中没有说明。

解决方案:

  • 明确参数约束:长度、范围、格式等
  • 说明验证规则:必填、选填、格式验证等
  • 提供错误提示:不符合约束时的错误提示

错误5:接口文档未及时更新

表现:接口修改后,文档没有同步更新。

示例:接口新增了参数,但文档中没有说明。

解决方案:

  • 建立更新流程:接口修改时同步更新文档
  • 版本控制:使用版本号管理文档版本
  • 及时通知:接口修改后及时通知相关团队

八、最佳实践

实践1:使用标准模板

使用标准接口文档模板,统一格式:

  • 模板统一:所有接口使用相同的模板格式
  • 字段规范:统一字段命名和类型定义
  • 响应规范:统一响应结构格式
  • 错误规范:统一错误码和错误信息格式

在制定接口文档模板时,可以使用思维导图工具来整理接口文档结构,比如使用AI思维导图工具,输入接口需求和业务场景,自动生成结构化的接口文档思维导图,帮助快速梳理接口结构和参数关系。

实践2:使用接口管理工具

使用专业的接口管理工具,提高效率:

  • Swagger:支持自动生成文档,支持在线调试
  • Apifox:支持接口设计、文档、测试一体化
  • YApi:支持接口管理、Mock数据、自动化测试
  • Postman:支持接口测试、文档生成

实践3:接口文档评审机制

建立接口文档评审机制,确保质量:

  • 评审流程:产品、前端、后端一起评审
  • 评审内容:参数完整性、响应结构、错误处理
  • 评审标准:建立评审 checklist
  • 及时更新:接口修改后及时更新文档

实践4:提供接口示例

在接口文档中提供完整的示例:

  • 请求示例:提供完整的请求示例(包括请求头、请求体)
  • 响应示例:提供成功和失败的响应示例
  • 代码示例:提供不同语言的调用示例(如:JavaScript、Python)
  • 在线调试:提供在线调试功能(如:Swagger UI)

实践5:版本管理

对接口文档进行版本管理:

  • 版本号:使用语义化版本号(如:v1.0.0)
  • 变更记录:记录每次变更的内容和原因
  • 兼容性:说明版本兼容性(如:v2.0不兼容v1.0)
  • 废弃说明:废弃接口时,说明替代方案和迁移时间

九、FAQ

Q1:接口文档谁来写?

建议产品经理写初稿(参数、响应结构),后端完善(错误码、技术细节)。如果团队有专门的接口设计师,可以由接口设计师负责。

Q2:接口文档用什么工具?

建议:Swagger/Apifox/YApi等接口管理工具,支持在线调试和自动生成文档。也可以使用Markdown、Word等文档工具,关键是统一格式,便于维护。

Q3:如何快速编写接口文档?

建议:使用标准模板,先写接口基本信息,再写请求参数,最后写响应结构和错误码。可以使用思维导图工具来整理接口结构,比如使用AI思维导图工具,输入业务场景和功能需求,自动生成结构化的接口设计思维导图,帮助快速梳理接口结构和参数关系。

Q4:接口文档需要多详细?

建议:越详细越好。至少包括:接口基本信息、请求参数(类型、必填、说明、示例)、响应结构(成功、失败)、错误码。如果有特殊业务规则,也要详细说明。

Q5:接口修改后如何通知?

建议:建立通知机制,接口修改后及时通知相关团队(前端、测试等)。可以使用邮件、IM工具、文档系统等方式通知。重要变更需要组织评审会议。

Q6:如何保证接口文档的准确性?

建议:定期检查接口文档和实际接口的一致性。可以使用自动化工具(如:Swagger)自动生成文档,减少人工错误。建立评审机制,确保文档质量。

Q7:接口文档需要包含测试用例吗?

建议:可以包含,但不是必须的。如果包含测试用例,可以帮助测试人员快速理解接口。测试用例可以包括:正常场景、异常场景、边界场景等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1120593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PolyglotPDF:终极PDF翻译神器快速上手教程

PolyglotPDF:终极PDF翻译神器快速上手教程 【免费下载链接】PolyglotPDF (PDF translation)Multilingual PDF processing tool, supports online and offline translation while maintaining original layout; performs OCR on scanned PDFs, faster than ocrmypdf.…

鸿蒙远程投屏革命:告别线缆束缚的开发新体验

鸿蒙远程投屏革命:告别线缆束缚的开发新体验 【免费下载链接】鸿蒙远程真机工具 该工具主要提供鸿蒙系统下基于视频流的投屏功能,帧率基本持平真机帧率,达到远程真机的效果。 项目地址: https://gitcode.com/OpenHarmonyToolkitsPlaza/HOSc…

Multisim14使用教程中常用元件库配置操作指南

Multisim14元件库配置实战指南:从“找不到元件”到高效仿真你有没有遇到过这种情况?打开Multisim14,想搭个简单的运放电路,结果在“放置元件”窗口翻了半天,LM358怎么也搜不到;或者辛辛苦苦画好原理图&…

ms-swift支持250+纯文本与100+多模态模型的Megatron全参数训练

ms-swift支持250纯文本与100多模态模型的Megatron全参数训练 在大模型研发进入“拼工程力”的今天,一个常见的困境是:明明手握Qwen、Llama或InternLM这样的主流架构,也拿到了高质量数据,却因为分布式训练配置复杂、显存爆满、多模…

STM32使用LL库实现SMBus主机:轻量级方案指南

STM32用LL库玩转SMBus主机:轻量高效通信实战指南从一个“掉线”的温度传感器说起上周调试一块工业温控板时,我遇到了个老问题:STM32主控读取LM75B温度传感器总是失败。示波器一抓——SCL线被死死拉低,总线锁死了。这不是第一次了。…

Hap QuickTime Codec终极指南:如何免费实现高速视频编码

Hap QuickTime Codec终极指南:如何免费实现高速视频编码 【免费下载链接】hap-qt-codec A QuickTime codec for Hap video 项目地址: https://gitcode.com/gh_mirrors/ha/hap-qt-codec Hap QuickTime Codec是一款完全免费的开源视频编解码器,专门…

ms-swift支持FP8与EETQ高阶量化技术,平衡精度与推理效率

ms-swift支持FP8与EETQ高阶量化技术,平衡精度与推理效率 在大模型加速落地的今天,一个现实问题摆在每个AI工程师面前:如何在有限算力下部署越来越“重”的千亿参数模型?尤其是在对话系统、RAG引擎或智能客服这类需要低延迟、高并发…

ms-swift支持外部奖励信号接入强化学习闭环

ms-swift 支持外部奖励信号接入强化学习闭环 在当前大模型广泛应用于对话系统、智能推荐和自主代理的背景下,一个核心挑战逐渐浮现:如何让模型不仅“说得对”,还能“做得好”?传统微调方法如SFT(监督微调)虽…

通过ms-swift实现Qwen3-VL、InternVL3.5等多模态大模型端到端训练与部署

通过 ms-swift 实现 Qwen3-VL、InternVL3.5 等多模态大模型端到端训练与部署 在当前 AI 技术飞速演进的背景下,多模态大模型正从实验室走向真实业务场景。无论是电商平台的商品图文问答,还是医疗影像的智能解读,亦或是自动驾驶中的视觉-语言交…

CP2102模块驱动安装:新手快速上手指南

从“未知设备”到稳定通信:手把手搞定CP2102串口模块驱动安装 你有没有遇到过这种情况? 新买的开发板插上电脑,打开Arduino IDE却提示“找不到COM端口”;或者在设备管理器里看到一个带着黄色感叹号的“未知USB设备”。明明线都接…

libgdx 3D游戏开发终极指南:从零基础到项目实战

libgdx 3D游戏开发终极指南:从零基础到项目实战 【免费下载链接】libgdx Desktop/Android/HTML5/iOS Java game development framework 项目地址: https://gitcode.com/gh_mirrors/li/libgdx libgdx 3D游戏开发为Java开发者提供了强大的跨平台解决方案。无论…

智能字幕制作革命:卡卡字幕助手让你的视频创作效率翻倍

智能字幕制作革命:卡卡字幕助手让你的视频创作效率翻倍 【免费下载链接】VideoCaptioner 🎬 卡卡字幕助手 | VideoCaptioner - 基于 LLM 的智能字幕助手,无需GPU一键高质量字幕视频合成!视频字幕生成、断句、校正、字幕翻译全流程…

html2canvas终极指南:从零开始掌握网页截图技术

html2canvas终极指南:从零开始掌握网页截图技术 【免费下载链接】html2canvas Screenshots with JavaScript 项目地址: https://gitcode.com/gh_mirrors/ht/html2canvas 想要在浏览器中轻松实现网页截图功能?html2canvas是一个强大的JavaScript库…

如何快速掌握盲水印技术?BlindWaterMark终极配置指南

如何快速掌握盲水印技术?BlindWaterMark终极配置指南 【免费下载链接】BlindWaterMark 盲水印 by python 项目地址: https://gitcode.com/gh_mirrors/bli/BlindWaterMark 想要在图片中隐藏重要信息却担心影响画质?BlindWaterMark项目为你提供完美…

使用ChromeDriver自动填写表单测试训练提交功能

使用ChromeDriver自动填写表单测试训练提交功能 在大模型研发节奏日益加快的今天,一个常见的工程挑战浮出水面:如何让模型训练任务像流水线一样稳定、高效地运行?许多团队仍依赖手动操作——打开网页、选择模型、填写参数、点击提交。这种模式…

ms-swift支持推理请求批处理提升GPU利用率

ms-swift支持推理请求批处理提升GPU利用率 在大模型应用日益普及的今天,一个看似简单的问题却困扰着许多工程团队:为什么我们的GPU利用率总是上不去?明明部署了昂贵的A100集群,监控面板上的算力曲线却像心电图一样频繁跌入低谷。这…

InVivoMAb Anti-Mouse PD-1 (CD279):竞品对比、应用优势等全面解析

在免疫治疗领域,PD-1(程序性死亡受体-1)作为关键的免疫检查点分子,已成为肿瘤免疫研究的核心靶点之一。针对这一重要蛋白,BioXCell推出的InVivoMAb Anti-Mouse PD-1 (CD279),凭借其高纯度、强效中和能力及可…

OpenLLaMA终极指南:5步掌握开源AI大模型核心应用

OpenLLaMA终极指南:5步掌握开源AI大模型核心应用 【免费下载链接】open_llama OpenLLaMA, a permissively licensed open source reproduction of Meta AI’s LLaMA 7B trained on the RedPajama dataset 项目地址: https://gitcode.com/gh_mirrors/op/open_llama…

ms-swift支持Embedding与Reranker任务,赋能RAG与搜索增强系统构建

ms-swift 支持 Embedding 与 Reranker 任务,赋能 RAG 与搜索增强系统构建 在企业级 AI 应用快速演进的今天,大模型不再只是“会聊天的机器人”,而是需要真正理解业务语义、参与复杂决策的信息中枢。尤其是在检索增强生成(RAG&…

3步搞定完美矢量转换:Potrace让位图重获新生

3步搞定完美矢量转换:Potrace让位图重获新生 【免费下载链接】potrace [mirror] Tool for tracing a bitmap, which means, transforming a bitmap into a smooth, scalable image 项目地址: https://gitcode.com/gh_mirrors/pot/potrace 还在为位图放大后模…