obatfr / sfrest
一个简单但强大的 Salesforce REST API 包装库。
Requires
- monolog/monolog: ^1.0
- namshi/jose: 2.2.*
- nategood/httpful: 0.2.*
This package is not auto-updated.
Last update: 2020-08-21 13:06:28 UTC
README
一个简单但强大的小巧库,用于与 Salesforce REST API 交互。
它包含执行任何 REST 调用到 Salesforce 所需的所有内容,包括获取/创建/更新/删除记录,以及使用参数执行 SOQL 查询。
它处理登录/密码和 JWT(OAuth 2.0)身份验证。
您可以使用复合 API(自 2015 年夏季以来可用)执行单个请求,或在一次调用中执行多个请求。
此库现在是开源的,任何贡献都将受到高度赞赏。
入门
设置连接应用
- 登录您的 Salesforce 组织
- 点击右上角的设置
- 在构建下点击
创建 > 应用
- 滚动到页面底部并点击连接应用下的
新建
- 输入以下远程应用的详细信息
- 连接应用名称
- API 名称
- 联系邮箱
- 在 API 下启用 OAuth 设置
- 回调 URL
- 选择访问范围(如果您需要刷新令牌,请在此指定)
- 点击
保存
安装
可以使用 Composer 进行安装
composer require mograine/sfrest:~1.0
配置
您应该配置您的 config.json 文件。结构可以在 SfRest/Config/config.json.dist 中找到
您可以将此文件放在任何目录中,并在 SfRequest 构造函数中设置文件路径。默认情况下,SfConfig 将检查 SfRest/Config 中是否存在该文件
{
"method": "JWT", # JWT or LOGINPASS
"client_id": "", # Can be found in "Connected Application" in Salesforce
"client_secret": "", # Can be found in "Connected Application" in Salesforce
"login_uri": "https://login.salesforce.com", # Login or Test
"username": "p.nom@mycompany.com", # Your username
"password": "", # If method is LOGINPASS, your password. Else, left empty
"rsa_key_full_path": "~/.ssh/key.pem" # Path to your private key
}
$sfRequest = new \SfRest\SfRequest("/root/config_sfrest.json");
执行操作
一旦您已配置 config.json 文件并实例化一个新的 SfRequest 类,您就可以开始使用了!
以下是一些您可以执行的操作示例
$sfRequest = new \SfRest\SfRequest();
$results = $sfRequest->query('SELECT Name, Email FROM Lead Limit 10');
$postalCode = "12345";
$results = $sfRequest->query('SELECT Id, Name FROM Lead WHERE BillingPostalCode = ? Limit 10', $postalCode);
$account = new \StdClass();
$account->Name = "My super customer";
$sfRequest->createRecord("Lead", $account);
$sfRequest->prepare();
$sfRequest->createRecord("Lead", ["Name" => "My first super customer"]);
$sfRequest->updateRecord("Lead", 'a0E1800000kketp', ["Name" => "My second super customer"]);
$sfRequest->createRecord("Lead", ["Name" => "My third super customer"]);
$sfRequest->commit(); // Send all previous action in one API call
可用操作
执行 SOQL 查询
简单查询
您可以使用或不需要参数执行 SOQL 查询。
默认情况下,参数将被引号(')括起来。如果您需要避免此操作(例如,如果您的参数之一是数字),您可以设置参数类型为 SfRequest::PARAM_INT。
参数类型
- SfRequest::PARAM_STR:默认值,用引号括起来
- SfRequest::PARAM_INT:对于数字,参数不会被括起来
- SfRequest::PARAM_NULL:仅接受值 'NULL'
$results = $sfRequest->query('SELECT Name, Email FROM Lead Limit 10');
$postalCode = "12345";
$results = $sfRequest->query('SELECT Id, Name FROM Lead WHERE BillingPostalCode = ?', $postalCode);
$postalCode = [12345, 54321];
$results = $sfRequest->query('SELECT Id, Name FROM Lead WHERE BillingPostalCode IN (?)', [SfRequest::PARAM_STR, $postalCode]);
$minimumEmployees = 10;
$maximumEmployees = 20;
$results = $sfRequest->query('SELECT Id, Name FROM Lead WHERE NumberOfEmployees >= ? AND NumberOfEmployees <= ?',
[SfRequest::PARAM_INT, $minimumEmployees],
[SfRequest::PARAM_INT, $maximumEmployees]);
"大数据" 查询
有时您需要从单个查询中获取大量数据(2000+)。Salesforce 不会在一次 API 调用中发送所有数据,您需要递归地遵循 "nextRecordsUrl"。
幸运的是,SfRest 可以为您做到! "queryMore" 方法将遵循 "nextRecordsUrl",您将收到一个数组中的所有数据。
$results = $sfRequest->queryMore('SELECT Name, Email FROM Lead');
echo $results[0]->Name;
获取记录
如果您知道记录的 id 和类型,您可以从中获取一组字段。
$data = $sfRequest->getRecord('Lead', '00WL0000008wVl1MDE', ['name', 'email', 'phone']);
创建记录
要创建记录,您只需要类型和字段值。
$sfRequest->createRecord("Lead", ['Name' => 'New Account']);
更新记录
要更新记录,您需要记录的类型和 id。
$sfRequest->updateRecord('Lead', '00WL0000008wVl1MDE', ['lastName' => 'Steve Jobs']);
删除记录
可以根据记录的 id 和类型删除记录。
$sfRequest->deleteRecord('Lead', '00WL0000008wVl1MDE');
一次性执行多个请求
有时您需要一次性执行多个操作。例如,当您的脚本生成许多对象时,在单个 API 调用中创建它们会很有趣。
这可以通过使用“批量模式”来实现,该模式将调用复合 API(自 2015 年夏季以来可用)。
您首先需要调用“准备”方法。您的所有后续请求都将存储在缓存中,并等待您调用“提交”方法,将所有之前的请求一次性发送。
如果成功,提交函数将在'results'数组中返回所有查询响应,顺序与您准备的顺序相同。
$sfRequest->prepare();
$sfRequest->createRecord("Lead", ['Name' => 'New Account 1']);
$sfRequest->createRecord("Lead", ['Name' => 'New Account 2']);
$sfRequest->query('SELECT Name, Email FROM Lead Limit 10');
$sfRequest->createRecord("Lead", ['Name' => 'New Account 3']);
$sfRequest->deleteRecord('Lead', '00WL0000008wVl1MDE');
$response = $sfRequest->commit();
$queryResponse = $response->results[2];
错误
如果出现问题,库将抛出异常。
所有错误都将使用\SfRest\Exception\SfException
抛出。
try
{
$results = $sfClient->search('SELECT Name, Email FROM Lead Limit 10');
print_r($results);
}
catch (\SfRest\Exception\SfException $e)
{
echo $e->getMessage();
}
致谢
此包装器由DMVP Formation公司创建并为其使用。
此README.md主要受到omniphx/forrest(连接的应用程序设置)和crunch-accounting salesforce PHP包装器的启发。