跳到主要内容
版本:v2

云引擎 REST API

云服务提供了统一的访问云函数的 REST API 接口,所有的客户端 SDK 也都是封装了这个接口从而实现对云函数的调用。

我们推荐使用 Postman 来调试 REST API。

Base URL

REST API 请求的 Base URL 可以在云服务控制台 > 设置 > 应用 Keys > 服务器地址查看。

概览

URLHTTP功能
/1.1/functions/<functionName>POST调用云函数
/1.1/call/<functionName>POST调用云函数,支持 LCObject 作为参数和结果

预备环境和生产环境

在客户端通过 REST API 调用云函数时,可以设置 HTTP 头 X-LC-Prod 来区分调用的环境。

  • X-LC-Prod: 0 表示调用预备环境
  • X-LC-Prod: 1 表示调用生产环境

通过 SDK 调用云函数时,SDK 会根据当前环境设置 X-LC-Prod HTTP 头,详见云函数指南中《切换云引擎环境》一节的说明。

云函数

通过 POST /functions/:name 可以调用云函数,参数和结果都是 JSON 格式。 例如,我们传入电影的名字来获取电影的目前的评分:

curl -X POST -H "Content-Type: application/json; charset=utf-8" \
-H "X-LC-Id: {{appid}}" \
-H "X-LC-Key: {{appkey}}" \
-d '{"movie":"夏洛特烦恼"}' \
https://{{host}}/1.1/functions/averageStars

响应:

{
"result": {
"movie": "夏洛特烦恼",
"stars": "2.5"
}
}

如果调用的云函数需要关联用户,那么可以通过 X-LC-Session 传入相应的 sessionToken

curl -X POST \
-H "X-LC-Id: {{appid}}" \
-H "X-LC-Key: {{appkey}}" \
-H "X-LC-Session: qmdj8pdidnmyzp0c7yqil91oc" \
-H "Content-Type: application/json" \
-d '{}' \
https://{{host}}/1.1/functions/hello

有些时候我们希望使用 LCObject 作为云函数的参数,或者希望以 LCObject 为云函数的返回值,这时我们可以使用 POST /1.1/call/:name 这个 RPC 调用的 API,云函数 SDK 会将参数解释为一个 LCObject,同时在返回 LCObject 时提供必要的元信息:

curl -X POST \
-H "X-LC-Id: {{appid}}" \
-H "X-LC-Key: {{appkey}}" \
-H "Content-Type: application/json" \
-d '{"__type": "Object", "className": "Post", "pubUser": "LeanCloud 官方客服"}' \
https://{{host}}/1.1/call/addPost

响应:

{
"result": {
"__type": "Object",
"className": "Post",
"pubUser": "官方客服"
}
}

RPC 调用时,不仅可以返回单个 LCObject,还可以返回包含 LCObject 的数据结构。 例如,假设有一个云函数返回一个数组,其中包含一个数字和一个 Todo 对象,那么 RPC 调用的结果为:

{
"result": [
1,
{
"title": "工程师周会",
"createdAt": {
"__type": "Date",
"iso": "2019-04-28T08:34:12.932Z"
},
"updatedAt": {
"__type": "Date",
"iso": "2019-04-28T08:34:12.932Z"
},
"objectId": "5cc5658443e78cb53fe7b731",
"__type": "Object",
"className": "Todo"
}
]
}

在通过 SDK 进行 RPC 调用时,SDK 会据此自动反序列化。

如果云函数超时,客户端会收到 HTTP status code 为 503、524、141 等的响应。

你还可以阅读云函数指南来获取更多的信息。