Usar a API REST
Objetivos de aprendizagem
- Fazer login no aplicativo Postman e navegar até a pasta REST na Coleção de APIs do Salesforce.
- Usar o recurso GET SObject Descrição.
- Criar uma conta usando a API REST.
- Executar uma consulta usando a API REST.
Recursos e métodos REST
- Obter informações resumidas sobre as versões de API disponíveis para você.
- Obter informações detalhadas sobre um objeto Salesforce, como Conta, Usuário, ou sobre um objeto personalizado.
- Fazer uma consulta ou pesquisa.
- Atualizar ou excluir registros.
Uma solicitação REST consiste em quatro componentes: um URI de recurso, um método HTTP, cabeçalhos de solicitação e um corpo da solicitação. Cabeçalhos de solicitação especificam metadados para a solicitação. O corpo da solicitação especifica dados para a solicitação, quando necessário. Caso não haja dados para especificar, o corpo é omitido da solicitação.
Antes de prosseguir
Você vai usar o Postman para fazer algumas chamadas de API. Você pode fazer solicitações REST de qualquer remetente HTTP. E o Postman é apenas uma das muitas ferramentas que você pode usar para interagir com sua organização Salesforce por meio da API.
O primeiro passo é criar um novo Trailhead Playground, conectá-lo ao aplicativo Postman, configurar o compartilhamento de recursos de origem cruzada e criar um fork para a Coleção de APIs do Salesforce. Você pode fazer isso concluindo o Início rápido: Conecte o Postman ao Salesforce.
Você pode fazer chamadas de API REST para o seu Trailhead Playground usando os recursos na pasta REST da coleção do Salesforce do aplicativo Postman, assim como você faria de qualquer outra interface HTTP. Quando você seleciona um recurso da Coleção de APIs do Salesforce, o URI é criado na parte superior da janela principal.
Descrever o objeto de conta
Vamos dar uma olhada em como isso funciona.
Você usará o recurso SObject Descrição. Este recurso, quando combinado com o método GET, retorna metadados sobre um objeto e seus campos. Vamos descrever o objeto de conta.
- Em Coleções, selecione seu fork da Coleção de APIs do Salesforce.
- Clique na pasta REST.
- Clique em SObject.
- Clique em GET SObject Descrição.
- No painel principal, abra a guia Params.
- Em Variáveis de caminho, na linha SOBJECT_API_NAME, coluna VALUE, digite
Conta
.
Antes de dar uma olhada nos resultados da sua consulta, vamos parar um minuto para explicar o URI deste recurso.
- GET – O método HTTP usado para esta chamada de API.
- {{_endpoint}} – O local onde a solicitação ocorrerá. Neste caso, você adicionou a URL do seu Trailhead Playground ao campo _endpoint nas variáveis para se conectar ao Salesforce.
- /services/data – Especifica que você está fazendo uma solicitação à API REST.
- /v {{version}} – O número da versão API. As chaves duplas indicam que essa parte pode ser definida como uma variável.
- /sobjects – Especifica que você está acessando um recurso no agrupamento sObject.
- /:SOBJECT_API_Name – O sObject sendo acionado; neste caso, Conta.
- /describe – Uma ação; neste caso, uma solicitação de Descrição.
Bom trabalho! Os metadados da Conta aparecem na tela, e o Postman formatou bem a resposta. Para ver a resposta JSON bruta, clique em Dados brutos.
Os metadados da Conta são exibidos no JSON. Uma vez que a API REST aceita tanto JSON quanto XML, vamos alterar o cabeçalho de solicitação para especificar uma resposta XML.
- Na janela de solicitação, clique em Cabeçalhos.
- Adicione um novo Cabeçalho com uma Key de
Accept
(Aceitar) e Value (Valor) deapplication/xml
.
Seu cabeçalho de solicitação tem essa aparência.
3. Clique em Enviar.
A resposta XML bruta é retornada. Oba!
Criar uma conta
Vamos agora criar uma conta usando o recurso SObject e o método POST.
Para criar uma conta:
- Em REST, selecione SObject e, em seguida, selecione POST SObject Criação.
- Abra a guia Params.
- Em Variáveis de caminho, na linha SOBJECT_API_NAME, coluna VALUE, digite
Conta
. - Abra a guia Corpo.
- Substitua o texto do corpo por este código:
{ "Name": "Captain Bly’s Finest Treasure Chests", "ShippingCity": "Lisbon" }
6. Clique em Salvar.
7. Clique em Enviar.
Se success: true, a conta foi criada com a ID retornada.
Para animar, vamos criar uma segunda conta sem especificar um nome de conta.
- Substitua o texto no corpo da solicitação pelo seguinte texto.
{ "ShippingCity" : "Melbourne" }
2. Clique em Enviar.
Oh, não! Você recebeu a resposta "Um ou mais campos obrigatórios não foram preenchidos: [Nome]"?
Uma vez que Nome é um campo obrigatório para criar uma conta, o servidor não processou a solicitação e você recebeu um erro. Felizmente, todas as informações que você precisa para corrigir a solicitação estão na resposta de erro. Vamos especificar o nome da conta, Pedro Pirata e seu Papagaio, no corpo de solicitação.
- Substitua o texto no corpo da solicitação pelo seguinte texto.
{ "Name": "Pirate Pete's Parrot Pellets", "ShippingCity": "Melbourne" }
2. Clique em Salvar.
3. Clique em Enviar.
Sucesso!
Executar uma consulta
Vamos agora imaginar que você ou outro usuário criou centenas de contas. Você quer encontrar os nomes de todas as contas em que a cidade de envio é Melbourne. Você pode usar o recurso Consulta para executar uma consulta SOQL para concentrar-se nos registros exatos desejados, como em um mapa do tesouro personalizado.
- Em REST, selecione GET Consulta.
- Abra a guia Params.
- Em Consulta Params, na linha q, coluna VALUE, cole o texto a seguir.
SELECT Name From Account WHERE ShippingCity = 'Melbourne'
4. Clique em Salvar.
5. Clique em Enviar.
A consulta devolve a conta que você acabou de criar, Pedro Pirata e seu Papagaio. Bom trabalho!
Dê uma olhada nos atributos. Ao lado do “url” está o URI do recurso da conta que foi retornada. Sua resposta tem mais ou menos essa aparência.
Quando você escreve uma integração, você pode pegar esse URI da resposta para acessar mais detalhes sobre essa conta.
Amostras Node.js e Ruby
Amostra Node.js usando JSforce
const jsforce = require("jsforce");const conn = new jsforce.Connection({ // you can change loginUrl to connect to sandbox or prerelease env. // loginUrl : "https://test.salesforce.com" }); // Log in with basic SOAP login (see documentation for other auth options) conn.login( process.env.USERNAME, process.env.PASSWORD + process.env.SECURITY_TOKEN, (err, res) => { if (err) { return console.error("Failed to log in to Salesforce: ", err); } console.log("Successfully logged in!"); // Run a SOQL query conn.query("SELECT Id, Name FROM Account LIMIT 5", (err, result) => { if (err) { return console.error("Failed to run SOQL query: ", err); } // Display query results const { records } = result; console.log(`Fetched ${records.length} records:`); records.forEach(record => { console.log(`- ${record.Name} (${record.Id})`); }); }); } );
Amostra Ruby usando Restforce
require 'restforce' # create the connection with the Salesforce connected app client = Restforce.new :username => ENV['USERNAME'], :password => ENV['PASSWORD'], :security_token => ENV['SECURITY_TOKEN'], :client_id => ENV['CLIENT_ID'], :client_secret => ENV['CLIENT_SECRET'] # execute the query accounts = client.query("select id, name from account limit 5") # output the account names accounts.each do |account| p account.Name end