云引擎 SDK 使用指南
这篇文档是关于云引擎 SDK 的深入介绍,如需了解云函数和 Hook 的用法请看 云函数和 Hook 开发指南。
云引擎 SDK 通常基于 数据存储 服务的 SDK,并提供了云函数和 Hook 等额外能力,供开发者在云引擎上更方便地开发后端应用。
接入云引擎 SDK
我们的示例项目默认已经接入了 SDK,如果你需要将云引擎 SDK 接入到已有的项目中,可以按照下面的步骤操作:
- Node.js
- Python
- PHP
- Java
- .NET (C#)
- Go
npm install leanengine leancloud-storage
然后在代码中将云引擎中间件挂载到 Express 框架上:
var express = require("express");
var AV = require("leanengine");
AV.init({
appId: process.env.LEANCLOUD_APP_ID,
appKey: process.env.LEANCLOUD_APP_KEY,
masterKey: process.env.LEANCLOUD_APP_MASTER_KEY,
});
var app = express();
app.use(AV.express());
app.listen(process.env.LEANCLOUD_APP_PORT);
其中,AV.express 接受一个可选参数 options,options 是一个对象,目前支持以下两个可选属性:
onError:全局错误处理函数,云函数(包括 Hook 函数)抛出异常时会调用该函数。该函数的使用场景包括统一发送错误报告。ignoreInvalidSessionToken:布尔值,为真时忽略客户端发来的错误的sessionToken(X-LC-session头),为假时抛出401错误{"code": 211, "error": "Verify sessionToken failed, maybe login expired: ..."}。客户端 SDK 发送请求时会统一发送X-LC-session头(其中指定了sessionToken),sessionToken可能因种种原因失效,而云函数在很多情况下并不关心sessionToken。因此,云引擎提供了ignoreInvalidSessionToken这个选项,设为真时忽略sessionToken错误。反之,如果该选项设为假,客户端收到相应报错时,需要重新登录。
关于云引擎 SDK 的详细 API 文档见 LeanEngine Node SDK · API.md。
点击展开 Koa 框架接入方法
var koa = require("koa");
var AV = require("leanengine");
AV.init({
appId: process.env.LEANCLOUD_APP_ID,
appKey: process.env.LEANCLOUD_APP_KEY,
masterKey: process.env.LEANCLOUD_APP_MASTER_KEY,
});
var app = koa();
app.use(AV.koa());
app.listen(process.env.LEANCLOUD_APP_PORT);
点击展开 Node SDK 不同版本的差异
Node SDK 的历史版本:
1.x:彻底废弃了全局的currentUser,依赖的 JavaScript 也升级到了 1.x 分支,支持了 Koa 和 Node.js 4.x 及以上版本。2.x:提供了对 Promise 风格的云函数、Hook 写法的支持,移除了一些被弃用的特性(AV.Cloud.httpRequest),不再支持 Backbone 风格的回调函数。3.x:推荐使用 的版本,指定 JavaScript SDK 为 peer dependency(允许自定义 JS SDK 的版本),升级 JS SDK 到 3.x。
详见 Node.js SDK 的 更新日志。
你可以在 GitHub 上找到 Node SDK 的源代码。
将 leancloud 添加到 requirements.txt 中:
leancloud>=2.9.4,<3.0.0
在本地运行和调试项目的时候,可以在项目目录下使用如下命令进行依赖安装:
pip install -r requirements.txt
然后在代码中加载 SDK,因为 wsgi.py 是项目最先被执行的文件,推荐在此文件进行 Python SDK 的初始化:
import os
import leancloud
APP_ID = os.environ['LEANCLOUD_APP_ID']
APP_KEY = os.environ['LEANCLOUD_APP_KEY']
MASTER_KEY = os.environ['LEANCLOUD_APP_MASTER_KEY']
leancloud.init(APP_ID, app_key=APP_KEY, master_key=MASTER_KEY)
leancloud.use_master_key(True)
SDK 默认开启了 masterKey 权限,会跳过 ACL 和其他权限限制,详见 使用超级权限。
点击展开 PyPI 上 leancloud-sdk 和 leancloud 两个包的差别
leancloud-sdk 是旧版的 Python SDK,已经不再维护,请使用 leancloud。
不同版本的差别详见 Python SDK 的 更新日志。
你可以在 GitHub 上找到 Python SDK 的源代码。
安装依赖:
composer require leancloud/leancloud-sdk
初始化 SDK:
use \LeanCloud\Client;
Client::initialize(
getenv("LEANCLOUD_APP_ID"),
getenv("LEANCLOUD_APP_KEY"),
getenv("LEANCLOUD_APP_MASTER_KEY")
);
Client::useMasterKey(true);
上面的代码默认开启了 masterKey 权限,会跳过 ACL 和其他权限限制,详见 使用超级权限。
你可以在 GitHub 上找到 PHP SDK 的源代码。
在 pom.xml 中增加依赖配置来增加 LeanEngine Java SDK 的依赖:
<dependencies>
<dependency>
<groupId>cn.leancloud</groupId>
<artifactId>engine-core</artifactId>
<version>8.2.1</version>
</dependency>
</dependencies>
在程序中初始化 SDK:
import cn.leancloud.LCCloud;
import cn.leancloud.LCObject;
import cn.leancloud.core.GeneralRequestSignature;
import cn.leancloud.LeanEngine;
String appId = System.getenv("LEANCLOUD_APP_ID");
String appKey = System.getenv("LEANCLOUD_APP_KEY");
String appMasterKey = System.getenv("LEANCLOUD_APP_MASTER_KEY");
String hookKey = System.getenv("LEANCLOUD_APP_HOOK_KEY");
LeanEngine.initialize(appId, appKey, appMasterKey);
GeneralRequestSignature.setMasterKey(appMasterKey);
上面的代码默认开启了 masterKey 权限,会跳过 ACL 和其他权限限制,详见 使用超级权限。
你可以在 GitHub 上找到 Java SDK 的源代码。
添加依赖:
dotnet add package LeanCloud.Storage
初始化 SDK:
LCEngine.Initialize(services);
你可以在 GitHub 上找到 .NET SDK 的源代码。
添加依赖:
import "github.com/leancloud/go-sdk/leancloud"
初始化 SDK:
client := leancloud.NewEnvClient()
leancloud.Engine.Init(client)
Go SDK 以标准库 HTTP 方法的形式提供了可供任意框架接入的接口,以 echo 为示例:
// ./adapters/echo.go
//...
func Echo(e *echo.Echo) {
e.Any("/1/*", echo.WrapHandler(leancloud.Engine.Handler()), setResponseContentType)
e.Any("/1.1/*", echo.WrapHandler(leancloud.Engine.Handler()), setResponseContentType)
e.Any("/__engine/*", echo.WrapHandler(leancloud.Engine.Handler()), setResponseContentType)
}
func setResponseContentType(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
c.Response().Header().Set("Content-Type", "application/json; charset=UTF-8")
return next(c)
}
}
函数 Echo 接收 echo 实例对象,将 Go SDK 中提供 LeanEngine 相关功能的接口绑定到 /1/ /1.1/ 和 /__engine/ 开头的路由前缀上,保证 LeanEngine 相关的底层功能正常。
大多数 Go Web 框架均提供将标准库 HTTP Handler 转换为特有 Handler 的方法,只要保证能够在其他框架中接入以上两个部件,即可将 LeanEngine 集成入你的 Go Web 框架中。
你可以在 GitHub 上找到 Go SDK 的源代码。
使用数据存储服务
接入 SDK 后,在云引擎中你就可以调用 数据存储 服务作为数据库来存储数据,或者使用文件、短信、推送等功能。可以查看数据存储服务对应语言的文档了解详情。
数据存储相关功能可以在云函数和 Hook 中使用,也可以在程序的其他部分(如自行选用的 Web 框架)中使用。