SuperAPI AI 工具集

api-development

编程与开发

查看项目

更新于 10-16 00:01

技能介绍

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

主要能力:

  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. 权限:在方法内用 frappe.has_permission() 做文档级校验,用 frappe.get_roles() 做角色校验,未通过则 frappe.throw(..., frappe.PermissionError)。
  5. 输入验证:校验必填、类型(frappe.utils.cint/flt)与取值范围。
  6. 响应与错误:返回结构化字典;用 frappe.throw() 抛出用户可见错误,标准异常会转为 {"exc_type": "...", "exc": "..."}。
  7. 长任务:用 frappe.enqueue 投递后台任务并返回 job_id,另设状态查询端点。

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

适用场景:Frappe/ERPNext 应用的自定义接口开发、第三方集成、前端数据交互。

限制与注意事项:必须显式添加 @frappe.whitelist(),否则报 Method not found;变更操作应使用 POST/PUT/DELETE;公开端点需 allow_guest=True,否则返回 403;需防 SQL 注入,使用 Query Builder 或 frappe.db.escape(),避免 eval();应为公开 API 实现限流;OAuth、webhook、限流细节见其 references 文档。具体收费与平台信息暂未提供。