• 大家觉得接口文档注释做的什么程度才更合适?
  • 发布于 2个月前
  • 127 热度
    7 评论
后端的大佬们 你们的接口文档注释写道什么程度呀?
这是组内另一个同事写的:
{
    "code": 200,
    "data": {
        "forum": {
            "forum_id": 1, //帖子 ID
            "user_id": 2, //发帖人 ID
            "content": "仅支持文本输入,简体中文、数字、大小写字母,中英文标点符号", //帖子内容
            "created_at": "2024-12-12 16:28", //发帖时间
            "user_name": "教师", //发帖人名称
            "avatar": "http://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": "http://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": "http://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": "http://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": "http://127.0.0.1:8000/assets/img/teacher_avatar_default.png",
                    "created_at": "2025-01-07 20:20:12",
                    "reply_user_nickname": "金莹"
                }
            ]
        }
    ]
}
然后嘛组内的一个前端 ,希望我写的清楚一点, 标清楚每个字段的含义。我 产生了迷茫,再者,前端的大佬们,你们心中的接口文档是咋样的?
用户评论
  • 千帆過盡
  • 既然是接口文档,我建议是不要用代码注释的方式去解释字段,而是分开来写,代码只是一个返回示例即可;另外是否需要每个字段都解释具体还得看场景,如果是公司内部前后端协作,有个固定的风格习惯后,一些通用字段(比如 id 、total )可以不用每个接口都解释,如果是公开 API 或者交付给外部的 API 越详细越好。
  • 2025/2/23 18:28:00 [ 0 ] [ 0 ] 回复
  • 半生輕狂客
  • 文档有很多方式,不一定通过注释的方式。一边来说数据清楚是不需要每个字段都注释的。
    而“希望我写的清楚一点 标清楚每个字段的含义”这种建议也缺乏指引,哪个字段有什么歧义需要具体指出来。一句“写详细点”犯了和“文档不详细”一样的错误。
    比如:
    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 的时区是什么?
  • 2025/2/23 18:26:00 [ 0 ] [ 0 ] 回复
  • 山有木兮
  • 你的看字段名就知道含义,你同事的像是在告诉你 1+1=2 、这是鼠标、这是显示器,这种层次,要么就备注在类里,用 swagger 显示字段含义。
  • 2025/2/23 18:21:00 [ 0 ] [ 0 ] 回复
  • 远山迷雾
  • 部分主要逻辑写注释至于枚举因为模型定义有替换成中文的方法所以也没什么注释,看是合作开发还是自己开发了,自己怎么舒服怎么来,合作基础的语法不用其他该写就写。
  • 2025/2/23 18:19:00 [ 0 ] [ 0 ] 回复
  • 城南诗客
  • 自己开发如果你有把握保证字段名清晰明了就可以不用写,比如 user_id 谁都知道是啥,但是 is_delete 对于三个月后的你就丈二和尚了。所以如果是多人协作,保证每个字段清晰注释是必要的,因为你无法保证每个字段命名都能让别人看得懂,而且这种只要写一遍就能让所有人受益(包括你自己),也是基本素养。
  • 2025/2/23 18:06:00 [ 0 ] [ 0 ] 回复
  • 价值人生
  • 先用大模型帮我构建一个基础的结构出来,比如根据代码或者 swagger 直接生成完整的文档,再把关键逻辑字段、易混淆的字段自己关注完善一下就行了。这种文档属于那种绝大部分都是废话,见文知意的;但是个别的字段确实比较绕需要特别说明的。如果你没有文档或者写的不细,那到时候真出了问题可能就是你背锅了;但是每个字段都打字又纯属体力活,所以分清主次,善用 AI 就好了。
  • 2025/2/23 18:02:00 [ 0 ] [ 0 ] 回复
  • 太伤人
  • 不写注释鬼知道这个字段是干嘛的,到时候猜错了出 BUG ,是你改还是前端改?每个字段最少提供一个与前端对应的名称注释,是否必填,数据类型(格式要求),如果是枚举,则提供每个选项的值与对应说明或获取来源。如果这个结构在其他接口出现过,我会标明该字段内结构与注释以某接口的某字段下结构为准,例如 forumReplyList 字段下数据,我会标注为 数组内结构为 forumReply{},以接口 /reply/view 的同名结构为准,我在那个接口会明确指定该结构的名称。
  • 2025/2/23 17:58:00 [ 0 ] [ 0 ] 回复