写代码最痛苦的是什么?不是逻辑难,而是无休止的参数校验和文档对齐!最近在搞 Metabase 的 API 接口,发现了一个神仙级别的工具——add-malli-schemas,这效率简直起飞,按头安利给每一位在 Clojure 坑里的打工人!😭
核心功能
add-malli-schemas 是一款专为 Metabase 代码库设计的 Agent 技能,它的核心任务就是帮你以最优雅、最标准的方式给 API 接口加上 Malli Schema。它不仅能自动识别路由参数、查询参数和请求体,还能根据响应内容推断出最合适的 Schema 类型。
- 全自动参数补全:无论是简单的 ID 还是复杂的嵌套 Map,都能一键生成符合规范的校验规则。
- 内置标准类型库:直接调用
ms/PositiveInt或ms/NonBlankString,再也不用担心类型命名乱糟糟。 - 响应校验预判:最绝的是它懂 Metabase 的中间件逻辑,知道响应 Schema 要在 JSON 序列化前验证,自动帮你把时间字段设为
:any,避开了多少坑啊!
实操代码示例
看看这简洁的代码,强迫症表示极度舒适:
(api.macros/defendpoint :post '/:name' :- ::ResponseSchema '创建资源的效率神器' [{:keys [name]} :- [:map [:name ms/NonBlankString]] {:keys [color]} :- [:map [:color ::Color]]] {:id 99 :name name :color color})
这种声明式的写法,配合 add-malli-schemas 的自动化引导,写接口就像填空题一样简单。🚀
优势分析
相比于手动翻文档、查类型,这个技能简直是降维打击。它自带了最佳实践参考(比如 api_keys/api.clj 里的完美范例),让你写出的代码自带“大厂风范”。最牛的是它的自定义错误提示功能,通过 mu/with-api-error-message,你可以直接定义报错信息,前端同事再也不会问你这个 400 错误到底是因为啥了!🌟
应用场景
如果你正在重构旧接口,或者在为 Metabase 开发新的功能模块,add-malli-schemas 就是你的刚需。它特别适合处理那些参数极多、校验逻辑复杂的 POST/PUT 请求。在进行工程化落地时,它能确保整个团队的 API 定义风格高度统一,后期维护成本直接减半。💎
最佳实践
在使用过程中,记得优先使用 ms/ 命名空间下的现有类型,这能保证与 Metabase 基础设施的完美兼容。对于多次复用的结构,务必使用 mr/def 定义命名 Schema。另外,千万别忘了给可选参数加上 :optional true,这些细节才是决定代码健壮性的关键。为了更好地管理和分享这些高效的 Agent 技能,建议大家去 Skill优仓 逛逛,那里有更多实用的工具能让你早点下班!🔥








暂无评论内容