学习目标
- 登录到Workbench并导航到REST Explorer。
- 使用描述资源。
- 使用REST API创建一个帐户。
- 使用REST API执行查询。
REST资源和方法
- 检索有关可用的API版本的摘要信息。
- 获取有关Salesforce对象的详细信息,例如帐户,用户或自定义对象。
- 执行查询或搜索。
- 更新或删除记录。
REST请求包含四个组件:资源URI,HTTP方法,请求标头和请求主体。请求标头指定请求的元数据。请求主体在需要时指定请求的数据。如果没有要指定的数据,则请求中将省略正文。
描述客户对象
- 登录到您的Trailhead DE组织并导航到Workbench。
- 对于环境,请选择 Production.
- 对于API版本,请选择可用的最高编号。
- 确保您选择 I agree to the terms of service.
- 点击 Login with Salesforce.
您已经到达Workbench主页。对于这个模块,我们只使用Workbench的许多工具之一,即REST资源管理器。
在顶部菜单中,选择 .


- /services/data—指定我们正在发出一个REST API请求
- /v36.0—API版本号
- /sobjects—指定我们正在访问sObject分组下的资源
- /account—sObject被执行;在这种情况下,客户
- /describe—Action; 在这种情况下,描述请求
现在确保选择GET方法,然后单击 Execute.

好的工作,队长。客户元数据出现在屏幕上。 Workbench已经很好地格式化了响应。要查看原始JSON响应,请单击 Show Raw Response.

帐户元数据以JSON形式显示在某些HTTP响应标头下方。因为REST API同时支持JSON和XML,所以让我们更改请求头以指定XML响应。在HTTP方法旁边,单击标题。对于Accept头值,将application / json替换为application / xml。您的请求标题看起来像这样。

点击 Execute。原始的XML响应被返回。欢呼!
创建一个客户
点击 Headers. 将Accept:application / xml改为Accept:application / json。你的请求看起来像这样。

{
"Name" : "NewAccount1",
"ShippingCity" : "San Francisco"
}

如果 success: true,则使用返回的ID创建帐户。展开错误文件夹以检查错误。
{
"ShippingCity" : "San Francisco"
}
哦,哦。您是否收到REQUIRED_FIELD_MISSING个响应?展开REQUIRED_FIELD_MISSING文件夹,然后展开字段文件夹。您的扩展响应如下所示。

{
"Name" : "NewAccount2",
"ShippingCity" : "New York"
}
执行查询
现在让我们想象一下,您或其他用户创建了数百个帐户。您想要查找航运城市是旧金山的所有帐户的名称。您可以使用查询资源执行SOQL查询,并根据需要输入确切的记录,就像定制的宝藏地图一样。/services/data/vXX.0/query/?q=SELECT+Name+From+Account+WHERE+ShippingCity='San+Francisco', 其中XX映射到:用以下文字替换URI文本框中的文本您正在使用的API版本。
我们用查询字符串中的+字符替换空格,以正确编码URI。您可以从参考资料部分的链接阅读HTML URL编码。确保选择了GET方法,然后单击 Execute.
展开记录文件夹。您是否看到一个名为我们创建的第一个帐户NewAccount1的文件夹?大。点击它。现在点击属性文件夹。 url旁边是返回的帐户的资源URI。你的回应看起来像这样。

当您编写集成时,您可以从响应中获取该URI以访问有关该帐户的更多详细信息。
Node.js和Ruby示例
使用Nforce的Node.js示例
var nforce = require('nforce');
// 创建与Salesforce连接的应用程序的连接
var org = nforce.createConnection({
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
redirectUri: process.env.CALLBACK_URL,
mode: 'single'
});
// 认证并返回OAuth令牌
org.authenticate({
username: process.env.USERNAME,
password: process.env.PASSWORD+process.env.SECURITY_TOKEN
}, function(err, resp){
if (!err) {
console.log('Successfully logged in! Cached Token: ' + org.oauth.access_token);
// 执行查询
org.query({ query: 'select id, name from account limit 5' }, function(err, resp){
if(!err && resp.records) {
// 输出帐户名称
for (i=0; i<resp.records.length;i++) {
console.log(resp.records[i].get('name'));
}
}
});
}
if (err) console.log(err);
});
使用Restforce的Ruby示例
require 'restforce'
// 创建与Salesforce连接的应用程序的连接
client = Restforce.new :username => ENV['USERNAME'],
:password => ENV['PASSWORD'],
:security_token => ENV['SECURITY_TOKEN'],
:client_id => ENV['CLIENT_ID'],
:client_secret => ENV['CLIENT_SECRET']
// 执行查询
accounts = client.query("select id, name from account limit 5")
// 输出帐户名称
accounts.each do |account|
p account.Name
end