В этой статье мы поговорим об отправке запросов от находящегося за пределами Salesforce клиента к web сервисам Apex в Salesforce. Для этого будем использовать Postman.
Начнем с создания Connected App в Salesforce, и пошагово подключим Salesforce к Postman, используя REST API. В качестве примера извлечем и создадим записи объекта в Salesforce с помощью Postman.
Salesforce Connected App
Salesforce предоставляет Connected App для подключения к платформе с помощью любого другого приложения.
Connected App — это framework, который позволяет внешнему приложению интегрироваться с Salesforce с помощью API и стандартных протоколов.
Postman
Postman — это инструмент для тестирования API-интерфейсов с использованием HTTP-запросов, который помогает создавать, тестировать и изменять API. Он имеет возможность делать различные типы HTTP-запросов (GET, POST, PUT, PATCH).
Создание Connected App
В Setup в поиск вводим - Apps, далее выбираем пункт - App Manager.
В открывшемся меню нажимаем кнопку - New Connected App
В открывшемся окне, в секции Basic Information, заполняем обязательные поля
В секции API (Enable OAuth Settings):
- включаем чекбокс Enable OAuth Settings, что позволит выбрать OAuth API (протокол, который разрешает безопасный обмен данными между приложениями посредством обмена токенами)
- в поле Callback URL в нашем случае укажем любой URL (В зависимости от того, какой OAuth flow вы используете, URL обычно является тем, на который перенаправляется браузер пользователя после успешной авторизации)
- поле Selected OAuth Scopes определяют разрешения для Сonnected app, которые предоставляются в виде токенов после авторизации приложения. Имя токена OAuth указано в скобках. В моем случае я выберу - Manage user data via APIs (api). Описание всех OAuth Scopes указано в документации - Link
Остальные настройки оставляем как есть и нажимаем кнопку Save. После нам нужно подождать до 10 минут пока Connected App подготовится.
По нажатию на кнопку Continue – мы попадаем на страницу Connected App.
Напротив кнопки Consumer Key and Secret нужно нажать - Manage Consumer Details, чтобы получить доступ к этим данным
Нажав на кнопку Manage Consumer Details, вы получите запрос на ввод кода подтверждения, который был отправлен на ваш email.
После успешной верификации на странице появится Consumer Key и Consumer Secret.
Consumer Key - это ключ API,«логин», который поставщик услуг выдает потребителю (службе, которая хочет получить доступ к ресурсам пользователя у поставщика услуг). Этот ключ идентифицирует потребителя.
Consumer Secret - это «пароль» потребителя, который используется вместе с Consumer Key для запроса доступа (т. е. авторизации) к ресурсам пользователя у поставщика услуг.
На этом настройка на Salesforce организации окончена, далее перейдем в Postman.
Настройка Postman
Скачиваем и устанавливаем Postman. Теперь, когда у нас есть готовые учетные данные, давайте откроем Postman. Прежде чем мы сможем сделать callout нашего endpoint, нам нужно пройти аутентификацию и получить access token.
В открывшемся окне нужно выбрать request метод, ввести URL и 5 обязательных параметров для получения access token.
- Введите URL согласно вашего типа организации:
Production URL: https://login.salesforce.com/services/oauth2/token
Sandbox URL: https://test.salesforce.com/services/oauth2/token
- Request метод устанавливаем в POST
во вкладке Params заполняем нужные параметра
- grant_type = password
- client_id = Consumer Key
- client_secret = Consumer Secret
- username = Salesforce username
- password = Salesforce user password + security token
Пока вводим наш пароль от Salesforce Организации и в Postman нажимаем кнопку Send.
И получаем ошибку:
Чтобы это исправить, нам нужно получить security token и добавить его к параметру password без пробела.
Переходим в Salesforce, Username – Settings.
Меню - Reset My Security Token.
Жмем кнопку Reset Security Token.
Получаем сообщение о том, что он отправлен на email Юзера:
Во входящем письме он будет указан:
Добавляем Security Token к паролю в Postman и снова нажимаем кнопку Send.
Подключение успешное, в результате мы получили “access_token”.
access_token — это токен, который выдается потребителю поставщиком услуг после того, как потребитель завершит авторизацию. Этот токен определяет права доступа потребителя к ресурсам конкретного пользователя. Каждый раз, когда потребитель хочет получить доступ к данным пользователя от этого поставщика услуг, потребитель включает токен доступа в запрос API к поставщику услуг.
Срок действия “access_token” составляет несколько часов, и в случае истечения срока его действия вам необходимо выполнить те же действия, чтобы получить новый токен доступа, поэтому лучше сохранить этот запрос.
Работа в Postman
Теперь, когда мы подключили Postman к Salesforce, попробуем получить запись по Id и затем создать запись. Для этого приведу пример раннее созданного Endpoint:
@RestResource(urlMapping=’/opportunity/*’)
global with sharing class OpportunityEndpoint {
@HttpGet
global static Opportunity getOpportunityById() {
RestRequest request = RestContext.request;
String opportunityId = request.requestURI.substring(request.requestURI.lastIndexOf('/')+1);
Opportunity opportunity = [
SELECT Name, StageName, CloseDate, Account.Name, Type, LeadSource, RecordType.Name
FROM Opportunity
WHERE Id = :opportunityId
];
return opportunity;
}
@HttpPost
global static String createOpportunities(Opportunity opportunity){
insert opportunity;
return 'Success';
}}
Для извлечения записи, откроем новую вкладку в Postman:
- выбираем метод GET
- URL должен выглядеть следующим образом с Id записи - https://“yourinstance”/services/apexrest/“Namespace if exist”/opportunity/0062o00000ztgucAAA
- Во вкладке Authorisation - выбираем тип Bearer Token и вставлям “access_token” получивший раннее
Нажимаем кнопку Send и получаем результат:
Теперь создадим запись, для этого в новой вкладке:
- выбираем метод POST
- на вкладке Header указываем в столбце KEY - Content-Type, в столбце VALUE - application/json; charset=UTF-8
- во вкладке Authorisation - выбираем тип Bearer Token и вставлям “access_token” получивший раннее
- URL должен выглядеть следующим образом: https://“yourinstance”/services/apexrest/“Namespace if exist”/opportunity
- На вкладке Body указываем с какими параметрами создать запись
Нажимаем Send и получаем результат, который возвращали в Apex методе @HttpPost createOpportunities()
Преимущества использования Salesforce REST API Postman
- Как и в примерах методов GET и POST, показанных выше, ко всем методам HTTP можно получить доступ с помощью пользовательского API через Postman. Это дает вам полный контроль над всеми HTTP-запросами.
- Нет ограничений на загрузку файлов, поскольку вы можете устанавливать headers и parameters и использовать любой content type, например binary, text, application и т. Д.
- Генерация code snippets для разных языков по вашим запросам возможна на Postman
- Вы можете создавать post execution скрипты с помощью JavaScript, которые можно использовать для установки переменных организации.
- Легко переключаться между несколькими средами