Frappe 自带一个 HTTP API,可分为远程过程调用(RPC)和表述性状态转移(REST)两类。RPC 用于调用白名单方法,REST 用于操作资源。
基础 URL 是 https://{your frappe instance}。此处展示的每个请求都应附加到你的基础 URL 末尾。例如,如果你的实例是 demo.erpnext.com,那么 GET /api/resource/User 意味着 GET https://demo.erpnext.com/api/resource/User。
API v1
所有 v1 API 端点均以 /api/ 为前缀。从 Frappe Framework 版本 15 开始,它们也可以使用 /api/v1/ 作为前缀。
RPC
对端点 /api/method/dotted.path.to.method 的请求将调用一个白名单 Python 方法。
例如,GET /api/method/frappe.auth.get_logged_user 将调用 frappe 认证模块中的此函数:
@frappe.whitelist()
def get_logged_user():
return frappe.session.user
响应:
{
"message": "Administrator"
}
REST
Frappe 中的所有文档均可通过前缀为 /api/resource/ 的 RESTful API 访问。你可以对它们执行所有 CRUD 操作:
- 创建
你可以通过向端点 /api/resource/{doctype} 发送 POST 请求来创建文档。
- 读取
你可以使用端点 /api/resource/{doctype}/{name} 按名称获取文档。
- 更新
你可以通过向端点 /api/resource/{doctype}/{name} 发送 PUT 请求来更新文档。这类似于 PATCH HTTP 请求,你无需发送整个文档,只需发送要更改的部分即可。
- 删除
你可以通过向端点 /api/resource/{doctype}/{name} 发送 DELETE 请求来按名称删除文档。
API v2
> API v2 自 Frappe Framework v15 起可用
所有 v2 API 端点均以 /api/v2/ 为前缀。
RPC v2
与 v1 类似,RPC 端点可在 /api/v2/method/ 前缀下使用。可用的端点如下:
/api/v2/method/login– 处理用户登录(隐式)/api/v2/method/logout– 注销当前用户/api/v2/method/ping– 检查服务器状态/api/v2/method/upload_file– 上传文件/api/v2/method/dotted.path.to.method– 调用任何白名单方法- /api/v2/method// – 从 DocType 控制器调用白名单方法
/api/v2/method/run_doc_method– 对文档运行白名单方法
REST v2
API v2 通过前缀 /api/v2/document/ 和 /api/v2/doctype/ 提供了更符合 RESTful 风格的接口。支持以下操作:
文档操作
-
创建
通过向
/api/v2/document/{doctype}发送POST请求来创建文档。 -
读取
通过向
/api/v2/document/{doctype}/{name}/发送GET请求来获取文档。 -
更新
通过向
/api/v2/document/{doctype}/{name}/发送PATCH或PUT请求来更新文档。 -
删除
通过向
/api/v2/document/{doctype}/{name}/发送DELETE请求来删除文档。 -
复制
通过向
/api/v2/document/{doctype}/{name}/copy发送GET请求来获取文档的全新副本。 -
执行方法
通过向
/api/v2/document/{doctype}/{name}/method/{method}发送GET或POST请求来对文档执行方法。method的常见值:add_comment?text=hello、submit、cancel、rename?name=newname。
DocType 操作
-
获取元数据
通过向
/api/v2/doctype/{doctype}/meta发送GET请求来获取 DocType 元数据。 -
获取计数
通过向
/api/v2/doctype/{doctype}/count发送GET请求来获取记录总数。 -
列出文档
通过向
/api/v2/document/{doctype}发送GET请求来列出文档。支持通过查询参数进行分页和字段选择。