后端的大佬们 你们的接口文档注释写道什么程度呀
如题
这是组内另一个同事写的
{
"code": 200,
"data": {
"forum": {
"forum_id": 1, //帖子 ID
"user_id": 2, //发帖人 ID
"content": "仅支持文本输入,简体中文、数字、大小写字母,中英文标点符号", //帖子内容
"created_at": "2024-12-12 16:28", //发帖时间
"user_name": "教师", //发帖人名称
"avatar": " 127.0.0.1:8000/assets/img/teacher_avatar_default.png" //发帖人头像
},
"forumReplyList": {
"data": [
{
"forum_reply_id": 15, //回复内容 ID
"forum_id": 1, //帖子 ID
"user_id": 2, //回复用户 ID
"content": "又一次回复内容", //回复的内容
"created_at": "2024-12-14 22:54", //回复的时间
"forum_reply_like_count": 0, //回复的点赞
"user_name": "教师", //回复用户的名称
"avatar": " 127.0.0.1:8000/assets/img/teacher_avatar_default.png", //回复用户的头像
"reply_user_name": "教师", //被回复的用户名
"is_delete": true, //是否是当前用户的回复:true 是当前用户的回复可以删除,false 不是当前用户的回复不能删除
"is_like": false //当前用户是否点赞,true 已点赞 false 未点赞
}
],
"current": 1, //当前页
"total": 12, //总共的数量
"size": 10, //当前分页数量
"has_more_page": true //是否有下一页:true 有下一页 false 没有下一页
}
}
}
这是我写的 完全无注释
{
"code": 200,
"data": {
"id": 2,
"type": "in_select",
"question_description": "请选择青龙还是白虎",
"question_images": [],
"question_options": [
{
"description": "青龙",
"image": null
},
{
"description": "白虎",
"image": null
}
],
"student_answer_exists": true,
"is_can_submit": false,
"socket_name": "course_interact_1_2"
}
}
{
"code": 200,
"data": [
{
"id": 2,
"body": "顶层",
"user_type": "teacher",
"user_nickname": "教师昵称阿",
"user_avatar": " 127.0.0.1:8000/assets/img/teacher_avatar_default.png",
"created_at": "2025-01-07 20:19:38",
"childs": [
{
"id": 6,
"body": "回复 1 的回复 2",
"user_type": "student",
"user_nickname": "程凤英",
"user_avatar": " 127.0.0.1:8000/assets/img/student_avatar_default.png",
"created_at": "2025-01-07 20:20:15",
"reply_user_nickname": "金莹"
},
{
"id": 5,
"body": "回复 1 的回复 1",
"user_type": "teacher",
"user_nickname": "安智渊",
"user_avatar": " 127.0.0.1:8000/assets/img/teacher_avatar_default.png",
"created_at": "2025-01-07 20:20:12",
"reply_user_nickname": "金莹"
}
]
}
]
}
然后嘛 组内的一个前端 希望我写的清楚一点 标清楚每个字段的含义
我 产生了迷茫
再者
前端的大佬们
你们心中的接口文档是咋样的
后端,每个字段都有。这是基本的要求。
枚举值的加注释,有多个某 id 的加注释,其它不加
乱入下我的开源接口工具 github.com/LinuxSuRen/api-testing
不是在代码层面写好注释然后生成 swagger 文档吗?
不写注释鬼知道这个字段是干嘛的,到时候猜错了出 BUG ,是你改还是前端改?
每个字段最少提供一个与前端对应的名称注释,是否必填,数据类型(格式要求),如果是枚举,则提供每个选项的值与对应说明或获取来源。
如果这个结构在其他接口出现过,我会标明该字段内结构与注释以某接口的某字段下结构为准,
例如 forumReplyList 字段下数据,我会标注为 数组内结构为 forumReply{},以接口 /reply/view 的同名结构为准,我在那个接口会明确指定该结构的名称。
先用大模型帮我构建一个基础的结构出来,比如根据代码或者 swagger 直接生成完整的文档,再把关键逻辑字段、易混淆的字段自己关注完善一下就行了。这种文档属于那种绝大部分都是废话,见文知意的;但是个别的字段确实比较绕需要特别说明的。如果你没有文档或者写的不细,那到时候真出了问题可能就是你背锅了;但是每个字段都打字又纯属体力活,所以分清主次,善用 AI 就好了。
如果你是前端,后端只给了不清不楚的返回示例,估计你更迷茫
自己开发如果你有把握保证字段名清晰明了就可以不用写
比如 user_id 谁都知道是啥
但是 is_delete 对于三个月后的你就丈二和尚了
所以如果是多人协作,保证每个字段清晰注释是必要的,因为你无法保证每个字段命名都能让别人看得懂,而且这种只要写一遍就能让所有人受益(包括你自己),也是基本素养。
部分主要逻辑写注释至于枚举因为模型定义有替换成中文的方法所以也没什么注释,看是合作开发还是自己开发了,自己怎么舒服怎么来,合作基础的语法不用其他该写就写
is_can_submit
这个命名方式好奇怪啊
你的看字段名就知道含义,你同事的像是在告诉你 1+1=2 、这是鼠标、这是显示器,这种层次
要么就备注在类里,用 swagger 显示字段含义
接口用的 GraphQL ,代码里会写详细的字段注释,再用框架生成 GraphQL Schema 。前端直接用 GraphQL Schema 生成接口 SDK ,确保端对端类型安全。
swagger +1 ,就喜欢用 fastapi / robyn 这种带有 openapi/swagger 文档输出的,简洁明了还能直接在线测试
openapi
文档有很多方式,不一定通过注释的方式。一边来说数据清楚是不需要每个字段都注释的。
而“希望我写的清楚一点 标清楚每个字段的含义”这种建议也缺乏指引,哪个字段有什么歧义需要具体指出来。一句“写详细点”犯了和“文档不详细”一样的错误。
比如:
type 除了 in_select 还有什么值?
question_images 为什么是空的?为什么是个数组?正常应该放几个 image ?
options 的 image 为什么是 null ,支持的格式是什么?
什么叫 student_answer_exists ?是和别的学生的答案冲突的意思?
is_can_submit 是什么意思?什么情况会是 false ?
socket_name 是什么意思?
id 为什么选择 2 ?是全局唯一的吗?如果是全局唯一的为什么不选择一个很大的数字做例子?如果会话内的序列为什么不是从 1 或者 0 开始?
什么是“回复 1 的回复 2”? id 为 2 的回复是回复 1 吗?
金莹是谁?是 id 为 2 ,user_nickname 为"教师昵称阿"的 nickname ?
created_at 的时区是什么?
既然是接口文档,我建议是不要用代码注释的方式去解释字段,而是分开来写,代码只是一个返回示例即可;另外是否需要每个字段都解释具体还得看场景,如果是公司内部前后端协作,有个固定的风格习惯后,一些通用字段(比如 id 、total )可以不用每个接口都解释,如果是公开 API 或者交付给外部的 API 越详细越好。
让 AI 加上注释又不需要花你多少时间.
我不能接受 childs
后端:什么是注释???
为什么你们的接口文档是这样的,更方便的做法难道不是使用 API 文档生成库,然后在入参和返回的结构体上添加注释吗?最后项目启动后可以在线浏览详细的接口文档,包含每个字段所需的类型、注释说明、参考值等,还能直接调用 API 测试。
参考: petstore.swagger.io/#/
has_more_page 这个参数需要返回吗, 前端根据 current total size 不是可以算出来么.
每个字段都有注释 然后生成文档的时候自动生成的
以前用过 datas
这啥也没有啊。。。你们前端这么软吗。
字段名、数据类型、值大小范围、必填、校验规则、特殊场景描述。
后端代码中无所谓,但是接口要有详细的文档说明。
不满意,让 AI 重新按你的要求加上注释即可,2025 年了该告别刀耕火种了
代码中不允许注释
第一天上班啊,让你写注释都这么难受😢
应该 给 model 每一个字段 标注出说明和枚举项的说明 和字段作用意图 ,并且在每个控制器和每个暴露接口中注明用法示例 和详细说明可能出现的错误说明等,并且输出标注规范的 swagger
注释的活,copilot 之类的能做的很好了,就是打个//然后等几秒
我们是所有 bean 类(包括给前端的和后端的)要求写注释,然后写了一个 idea 的插件去根据注释生成接口文档……
如果注释没写,常见的字段也有一些内置词典……同个代码文件里的 api 字段,如果遇到了别的接口上已经写的,会将其作为字典来用。
但至少得详细说明接口是干嘛的,每个字段是干嘛的。
"type": "in_select"如果就只有 in select 一个选择的话,你不写注释倒也行。但是你敢发誓只有 in select 一个值?
这写的啥啊,除了知道返回的字段,其他啥都看不出来
贴出来代码块,下面列表解释喽。如果要团队协作,肯定需要一种大家都能接受的方式
使用 api 工具类似于 swagger 能在模型层定义字段信息,很清晰 明了
我们知道,HTTP是无状态的,所以,当我们需要获得用户是否在登录的状态时,我们需要检查用户的登录状态,一般来说,用户的登录成功后,服务器会发一个登录凭证(又被叫作Token),…
如题,我在号称隐私保护强的 CalyxOS ( Android 13 )安装了哔哩哔哩 app ,然后浏览了几个视频,再卸载,再安装回去,结果发现它仍然保留了我卸载前的浏览记录…
时下最热的技术莫过于Docker了,很多人都觉得Docker是个新技术,其实不然,Docker除了其编程语言用go比较新外,其实它还真不是个新东西,也就是个新瓶装旧酒的东西,所…