查一个内部接口到底是 GET 还是 POST,得跑回源码里翻 decorator;想弄清某个 Doctype 的字段结构,得在五个浏览器标签页里跳来跳去;更头疼的是,新同事总抓着你问“那个方法的参数名到底叫什么”——这些经历,但凡搞过 Frappe 或 ERPNext 开发的人都不陌生。现在,一个名为 frappe_doc 的小工具让这些烦恼变成了过去式。
frappe_doc 本身就是一个标准的 Frappe 应用,装上就能跑,不需要额外编写 YAML 配置,也不用修改现有代码。它到底怎么工作的?答案比想象的更清爽:安装那一刻起,它就用 Python 的 ast 模块把所有已安装应用扫描一遍,专门找出用 @frappe.whitelist() 装饰的函数。注意,它是解析抽象语法树,而不是导入或执行任何代码——所以整个过程完全安全,不会触动你的生产环境。紧接着,它抓起函数里的 docstring,捞出参数描述、返回类型和用法示例;函数签名里如果写好了类型注解,它也能直接提取出来。最后,这些信息在 /app/developer_portal (或者快捷地址 /doc)里变成一个可交互的网页,长得就像 Swagger,但彻彻底底长在 Frappe 生态里。
进入门户后,一眼就能看到两个主要分页:API Explorer 和 DocType Fields。API Explorer 那页把所有暴露出来的端点按应用分类列好,每个方法右侧自动标出它被推断出的 HTTP 方法。这里的推断规则很聪明:如果你的函数名叫 get_xxx,它默认标注 ~GET ;如果是 create_xxx,就标 ~POST;以此类推。当然,你完全可以通过 @frappe.whitelist(methods=["GET"]) 这样的显式声明覆盖自动推断,让它显示成实线边框的 GET 标记。而 DocType Fields 那一页,则把整个站点的文档类型(Doctype)模式搬了上来,包括复杂的子表关系,点一点就能看清楚字段树。
查找效率也在考虑之中。页面顶部的搜索栏支持按不同维度过滤,你可以限定只搜某个应用、只看某类方法,或者把关键字打在搜索框里快速定位。更有意思的是,每个接口旁边还会配上代码片段,方便你直接复制接入。换句话说,需要什么文档,搜就完了,不用再在 IDE 和浏览器之间切来切去。
这一切的出发点,都是为了让开发过程少一些猜谜,多一些即查即用。安装也只需四行 bench 命令:get-app 拉取仓库、install-app 装到站点、migrate 数据库、再清一次缓存即可。访问权限方面,系统管理员的 desk 上会自动出现入口;如果启用了 developer_mode,那么所有已登录用户都能看到。从发现 API、推断请求方法、到提供实时可交互的文档界面,frappe_doc 像一位不愿声张的助手,把你的代码库变成了一个活着的开发者门户,零维护,零额外装饰器,却把所有散落的开发细节串联了起来。
热门跟贴