REST快开始

若要设置和运行 REST API,请将一些基本请求发送到 Salesforce的。本快速入门介绍了如何设置基本环境和更新记录 使用 REST API。您可以通过多种方式设置和使用 REST API,示例演示了如何使用 免费的 Developer Edition 和 cURL。

  1. 使用 cURL 了解可与 cURL
    一起使用以向 Salesforce 发出请求的格式。此 Quick Start 使用 cURL 示例,但您可以使用任何可以发出 REST 请求的工具或开发环境。
  2. 第一步:注册 Salesforce Developer Edition Developer Edition
    提供了一个免费且简单的解决方案,以便您可以使用 Salesforce 进行测试和开发。
  3. 第二步:设置身份验证
    若要成功发送请求,REST API 需要通过身份验证获取的访问令牌。虽然您可以针对自己的连接应用程序创建和进行身份验证,但为了方便起见,这些快速入门示例使用 Salesforce CLI。Salesforce CLI 是一个可以进行身份验证的连接应用程序,无需进行任何配置。
  4. 第三步:演练示例代码
    要访问 Salesforce 中不同类型的资源,请发出一系列 REST 请求。在尝试这些示例之前,请确保完成先决条件并获取本快速入门的步骤 1 中的访问令牌。
  5. 使用其他工具 其他工具
    可用于从 Salesforce 组织获取数据。

使用 cURL

了解可用于 cURL 向 Salesforce 发出请求的格式。 此 Quick Start 使用 cURL 示例,但您可以使用任何工具或开发环境 可以发出 REST 请求。

充分熟悉 cURL,以便能够理解本指南中的示例 并将它们翻译成您正在使用的工具。附加包含 请求中,您必须正确设置访问令牌的格式。使用这些提示来帮助您使用 cURL 在完成快速入门时。有关 cURL 的详细信息,请参阅 curl.se。

附加请求正文

许多示例包括请求正文,即包含请求数据的 JSON 或 XML 文件。 使用 cURL 时,请将这些文件保存到本地系统,并使用 或选项。—data-binary-d此示例附加文件。

new-account.json

curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/Account/ -H 'Authorization Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: application/json" —d @new-account.json -X POST

处理访问令牌中的感叹号运行 cURL 示例时,您可能会在 macOS 和 Linux 系统上出现错误,因为 OAuth 访问令牌中存在感叹号 (!)。为避免出现此错误, 对感叹号进行转义或使用单引号。转义感叹号 访问令牌,当访问令牌用双括起来时,在其前面插入反斜杠 引号。

\!

例如,访问令牌字符串 此 cURL 命令的感叹号 (!) 已转义。

curl https://MyDomainName.my.salesforce.com/services/data/v59.0/ -H "Authorization: Bearer 00DE0X0A0M0PeLE\!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE"

或 您可以将访问令牌括在单引号内,以免对感叹号进行转义。

curl https://MyDomainName.my.salesforce.com/services/data/v59.0/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE'

重要

所有引号,无论是单引号还是双引号,都必须是直引号,而不是 卷曲引号。

步 一:注册 Salesforce Developer Edition

Developer Edition 提供了一个免费且简单的解决方案,以便您可以将 Salesforce 用于 测试和开发。要注册 Developer Edition 帐户,请转到 developer.salesforce.com/signup。

注意

开发商 版本数据存储最大为 5 MB。此限制不会阻止您使用这些 例子。

如果您有开发沙盒,则可以将其与这些示例一起使用。

在开始之前,请按照以下方式验证您的用户配置文件是否具有 API 已启用权限 Salesforce 帮助中的用户权限中的说明。

第二步:设置身份验证

若要成功发送请求,REST API 需要由 认证。尽管您可以针对自己的连接应用创建和进行身份验证, 为方便起见,这些快速入门示例使用 Salesforce CLI。Salesforce CLI 是连接的 可以进行身份验证的应用程序,并且无需进行任何操作即可进行配置。

使用 Salesforce CLI 获取访问令牌

使用您从 Salesforce CLI 获取的访问令牌(也称为“持有者令牌”) 对 cURL 请求进行身份验证。

  1. 安装或更新 Salesforce CLI。.
    1. 如果您已安装 Salesforce CLI,请按照更新 Salesforce CLI 中的说明进行更新。
    2. 如果您需要安装 Salesforce CLI, 为您的操作系统安装最新版本。
    3. 验证您的安装。
  2. 使用 Salesforce CLI 登录您的开发人员组织。sf org login web浏览器打开 https://login.salesforce.com。
  3. 在浏览器中,使用用户的凭据登录到开发人员组织。
  4. 在浏览器中,单击允许”以允许访问。在命令下 行中,您会看到类似的确认 消息。Successfully authorized juliet.capulet@empathetic-wolf-g5qddtr.com with org ID 00D5fORGIDEXAMPLE
  5. 在命令行中,通过查看有关以下内容的身份验证信息来获取访问令牌 您的组织。sf org display --target-org <username>为 例:sf org display --target-org juliet.capulet@empathetic-wolf-g5qddtr.com例 命令输出:=== Org Description KEY VALUE ─────────────── ──────────────────────────────────────────────────────────────────────────────────────────────────────────────── Access Token 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE Api Version 59.0 Client Id PlatformCLI Created By jules@sf.com Created Date 2023-11-16T20:35:21.000+0000 Dev Hub Id jules@sf.com Edition Developer Expiration Date 2023-11-23 Id 00D5fORGIDEXAMPLE Instance Url https://MyDomainName.my.salesforce.com Org Name Dreamhouse Signup Username juliet.capulet@empathetic-wolf-g5qddtr.com Status Active Username juliet.capulet@empathetic-wolf-g5qddtr.com在 ,记下长访问令牌字符串和实例 URL 字符串。您需要两者才能发出 cURL 请求。注意在访问后获取新令牌 令牌过期时,请重复此步骤以查看您的身份验证信息。

可选的 Salesforce CLI 快捷方式

成功进行身份验证后,请在 cURL 中尝试这些可选快捷方式 工作流,以简化未来使用 Salesforce CLI 进行身份验证的流程。

列出我的组织

sf org list

列出您创建的所有组织 或经过身份验证。

打开我的组织

sf org open --target-org <username>

打开 浏览器中的指定组织(由用户名或别名标识)。因为你已经成功了 以前使用 Salesforce CLI 命令向此组织进行身份验证,不需要提供您的凭据 再。

org login web

显示“我的组织”的访问令牌

sf org display --target-org <username>

输出 包括您的访问令牌、客户端 ID、连接状态、组织 ID、实例 URL、用户名和 别名(如果适用)。

为我的用户名设置别名为方便起见,请为您的用户名创建一个别名,这样您就不必输入 整个 Salesforce 字符串。例如,代替

juliet.capulet@empathetic-wolf-g5qddtr.com

创造 像

dev

要在此示例中设置别名, 跑

sf alias set dev juliet.capulet@empathetic-wolf-g5qddtr.com

在脚本中使用这些命令

通过调用标志来使用 CLI 的 JSON 输出。 请求 JSON 输出提供一致的输出格式,非常适合运行 脚本。如果没有该标志,CLI 可以更改 输出格式。–json–json

第三步:演练示例代码

要访问 Salesforce 中不同类型的资源,请发出一系列 REST 请求。 在尝试这些示例之前,请确保完成先决条件并获取访问权限 令牌。

您可以复制并粘贴这些示例,以使用 cURL 发送它们。但首先将基本 URI 替换为您的 Salesforce 域。为 有关 REST 请求剖析的信息,请参阅 REST 资源和请求。MyDomainName

获取 Salesforce 版本

要检索有关每个可用 Salesforce 版本的信息,请提交版本请求。在这种情况下,请求不需要身份验证。

curl https://MyDomainName.my.salesforce.com/services/data/

此请求的输出(包括响应标头)指定所有有效的 版本。结果可以包含多个值。

Content-Length: 88 
Content-Type: application/json; 
charset=UTF-8 Server:
[
    {
        "label":"Spring '11",
        "url":"/services/data/v21.0",
        "version":"21.0"
    }
    ...
]

获取资源列表

检索可用于 Salesforce 的资源列表,在此示例中,用于 版本 59.0,请提交“按版本划分的资源”请求。

curl https://MyDomainName.my.salesforce.com/services/data/v59.0/ -H "Authorization: Bearer access_token"

此请求的输出显示这是 Salesforce 版本 59.0 中的可用资源之一。sobjects

{
    "sobjects" : "/services/data/v59.0/sobjects",
    "search" : "/services/data/v59.0/search",
    "query" : "/services/data/v59.0/query",
    "recent" : "/services/data/v59.0/recent"
}

获取可用列表 对象

要请求可用对象的列表,请提交“描述全局”请求。

curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/ -H "Authorization: Bearer access_token"

此请求的输出显示 Account 对象可用。

Transfer-Encoding: chunked 
Content-Type: application/json; 
charset=UTF-8 Server:
{
 "encoding" : "UTF-8",
 "maxBatchSize" : 200,
 "sobjects" : [ {
    "name" : "Account",
    "label" : "Account",
    "custom" : false,
    "keyPrefix" : "001",
    "updateable" : true,
    "searchable" : true,
    "labelPlural" : "Accounts",
    "layoutable" : true,
    "activateable" : false,
    "urls" : { "sobject" : "/services/data/v59.0/sobjects/Account",
    "describe" : "/services/data/v59.0/sobjects/Account/describe",
    "rowTemplate" : "/services/data/v59.0/sobjects/Account/{ID}" },
    "createable" : true,
    "customSetting" : false,
    "deletable" : true,
    "deprecatedAndHidden" : false,
    "feedEnabled" : false,
    "mergeable" : true,
    "queryable" : true,
    "replicateable" : true,
    "retrieveable" : true,
    "undeletable" : true,
    "triggerable" : true },
   },
...

获取对象基本信息

若要检索有关可用 Account 对象元数据的基本信息,请提交 sObject 基本信息请求。

curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/Account/ -H "Authorization: Bearer access_token"

此请求的输出显示 Account 对象的基本属性,例如其 名称和标签,并列出最近使用的帐户。

{
    "objectDescribe" : 
    {  
        "name" : "Account",  
        "updateable" : true,  
        "label" : "Account",  
        "keyPrefix" : "001",  
        
        ...
        
        "replicateable" : true,  
        "retrieveable" : true,  
        "undeletable" : true,  
        "triggerable" : true
    },
    "recentItems" : 
    [ 
        {  
            "attributes" : 
            {    
                "type" : "Account",    
                "url" : "/services/data/v59.0/sobjects/Account/001D000000INjVeIAL"  
            },  
            "Id" : "001D000000INjVeIAL",  
            "Name" : "asdasdasd"
        }, 

        ...

    ]
}

获取字段列表

若要检索更详细的信息,请提交 sObject Describe 请求。

curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/Account/describe/ -H "Authorization: Bearer access_token"

此请求的输出显示有关帐户的更多详细信息 对象,例如其字段属性和子关系。

{
    "name" : "Account",
    "fields" : 
    [
        {
            "length" : 18,
            "name" : "Id",
            "type" : "id",
            "defaultValue" : { "value" : null },
            "updateable" : false,
            "label" : "Account ID",
            ...
        },
        ...
    ],
    "updateable" : true,
    "label" : "Account",
    ...
    "urls" : 
    {  
        "uiEditTemplate" : "https://MyDomainName.my.salesforce.com/{ID}/e",  
        "sobject" : "/services/data/v59.0/sobjects/Account",  
        "uiDetailTemplate" : "https://MyDomainName.my.salesforce.com/{ID}",  
        "describe" : "/services/data/v59.0/sobjects/Account/describe",  
        "rowTemplate" : "/services/data/v59.0/sobjects/Account/{ID}",  
        "uiNewRecord" : "https://MyDomainName.my.salesforce.com/001/e"
    },
    "childRelationships" : 
    [ 
        {  
            "field" : "ParentId",  
            "deprecatedAndHidden" : false,  
            ...
        }, 
        ...
    ],
     
    "createable" : true,
    "customSetting" : false,
    ...
}

执行 SOQL 查询

若要执行检索所有帐户名称值列表的 SOQL 查询,请提交 查询请求。

curl https://MyDomainName.my.salesforce.com/services/data/v59.0/query?q=SELECT+name+from+Account -H "Authorization: Bearer access_token"

输出列出了可用的帐户名称,以及每个名称的前面属性 包括帐户 ID。

{
    "done" : true,
    "totalSize" : 14,
    "records" :
    [
        {
            "attributes" :
            {
                "type" : "Account",
                "url" : "/services/data/v59.0/sobjects/Account/001D000000IRFmaIAH"
            },
            "Name" : "Test 1"
        },
        {
            "attributes" :
            {
                "type" : "Account",
                "url" : "/services/data/v59.0/sobjects/Account/001D000000IomazIAB"
            },
            "Name" : "Test 2"
        },
        ...
    ]
}

注意

您可以在 Salesforce SOQL 和 SOSL 参考中找到有关 SOQL 的更多信息 指南。

更新记录中的字段

若要检索其中一个帐户并更新其帐单城市,请提交 sObject 行请求。要更新对象,请创建一个名为 patchaccount.json 的文本文件,其中包含新的计费城市 信息。

{
    "BillingCity" : "Fremont"
}

在 REST 请求中指定此 JSON 文件。cURL 表示法在指定数据时需要该选项。查看更多 信息,请参阅 http://curl.haxx.se/docs/manpage.html。—d

此外,指定方法,该方法用于 更新 REST 资源。此 cURL 命令检索指定的 Account 对象 使用其 ID 字段并更新其帐单城市。PATCH

curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/Account/001D000000IroHJ -H "Authorization: Bearer access_token" -H "Content-Type: application/json" --data-binary @patchaccount.json -X PATCH

不返回响应正文,只返回标头。

HTTP/1.1 204 No Content
Server: 
Content-Length: 0

若要查看帐单地址是否已更改为 Fremont,请刷新 帐户。

使用其他工具

其他工具可用于从 Salesforce 组织获取数据。

如果不想使用 CURL,可以使用其他工具来练习 API。可能 选项包括:

  • Salesforce 命令行界面。
  • Postman(第三方工具)。有关详细信息,请参阅 Postman API 客户端 Trailhead 模块。

这些工具提供了简化创建和发送过程的功能 许多 API 请求。