介绍

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 请求来列出文档。支持通过查询参数进行分页和字段选择。