SuperAPI AI 工具集

frappe-api-development

编程与开发

查看项目

更新于 10-16 00:01

技能介绍

用途:在 Frappe 应用中构建安全、规范的 REST 与 RPC API,用于创建自定义端点、对接外部系统、实现 webhook,以及向前端暴露业务逻辑。

主要能力:

  1. 内置 REST API:所有 DocType 自动提供 CRUD 端点,如 POST /api/resource/Customer、GET /api/resource/Customer/CUST-001、PUT、DELETE,以及带 filters 的列表查询。
  2. 自定义 RPC:用 @frappe.whitelist() 装饰 Python 方法,通过 POST /api/method/my_app.api.process_order 调用;公开端点用 @frappe.whitelist(allow_guest=True)。
  3. 认证:API Key + Secret 使用请求头 Authorization: token api_key:api_secret;也支持 Bearer Token 与登录会话 Cookie。
  4. 权限:在 RPC 方法中显式调用 frappe.has_permission() 做文档级校验,并可用 frappe.get_roles() 做角色校验。
  5. 输入验证:用 frappe.utils.cint、frappe.utils.flt 转换类型,校验必填、范围与格式。
  6. 响应与错误:成功返回结构化字典;错误用 frappe.throw(),权限错误传 frappe.PermissionError。
  7. 长任务:用 frappe.enqueue 投递后台任务,返回 job_id,再用 get_job 查询状态。

使用方式:按需求选择模式——DocType CRUD 用内置 REST;自定义动作用 RPC;外部回调可用 Webhook DocType;批量操作走后台任务加状态端点。调试可用 bench --site <site> console 手动测试,日志用 bench --site <site> show-log 查看。

适用场景:前端调用后端业务逻辑、第三方系统集成、公开数据接口、异步导出等。

限制与注意:必须始终服务端校验输入,不可信任客户端数据;SQL 使用 Query Builder 或 frappe.db.escape(),避免 eval;公开 API 应做限流;变更操作使用 POST/PUT/DELETE;缺少 @frappe.whitelist() 会报 Method not found;公开端点未加 allow_guest=True 会返回 403。OAuth、webhook、限流等细节资料指向 references 目录,具体内容暂未提供。