In questa sessione esploreremo le composite resources / API composite di Salesforce. L’uso di composite resources API REST è utile per migliorare le prestazioni dell’applicazione riducendo al minimo il numero di viaggi di andata e ritorno tra il client e il server.

Che cos’è il Composite Resources

Vediamo cosa sono le composite resources. Abbiamo visto le API rest standard di Salesforce che utilizziamo per creare o aggiornare i dati in Salesforce da un sistema esterno. Le composite resources sono una forma migliorata di rest api che esegue una serie di richieste rest api in un’unica chiamata. Consente di eseguire più operazioni, come la lettura, la creazione, l’aggiornamento e la cancellazione dei dati di Salesforce in un’unica chiamata.

È possibile utilizzare l’output di una richiesta come input per i corpi di risposta delle richieste successive e lo stato di tutte queste richieste rest api viene restituito insieme in un unico corpo di risposta. Tutte le serie di rest api vengono conteggiate come una singola chiamata ai fini dei limiti dell’API. Questa viene eseguita nel contesto dello stesso utente.

  1. Serie di richieste REST API  in un’unica chiamata.
  2. Operazioni CRUD multiple
  3. Output di una richiesta come input di una richiesta successiva.
  4. Corpi di risposta e stato in un unico corpo di risposta.
  5. Conta come una singola chiamata per i limiti dell’API.
  6. Eseguita nel contesto dello stesso utente.

Composite Resources consiste in

Composite request body

Ecco un esempio di composite request body

{
   "allOrNone" : true,
   "collateSubrequests": true,
   "compositeRequest" : [
     { Composite Subrequest},
     { Composite Subrequest},
     { Composite Subrequest}
   ]
}
  • Si può passare “allOrNone“, un booleano che specifica cosa fare quando si verifica un errore durante l’elaborazione di una richiesta secondaria, se il valore è vero per l’interacomposite request.
  • collateSubrequests : Controlla se l’API colloca le richieste secondarie non correlate per raggrupparle (true) o no (false).
  • compositeRequest : Raccolta di richieste secondarie da eseguire

Risposta alla Request Composite

Qui otteniamo l’id di salesforce come risposta composite. Id si può vedere un successo come true significa che questa richiesta api ha avuto successo e la posizione specifica l’id con lo stato http 201 e viene restituito anche l’id di riferimento.

{
   "compositeResponse" : [
      {  Composite Subrequest Result },
      {  Composite Subrequest Result },
      {  Composite Subrequest Result }
   ]
}

Perché le Composite Resources

Vediamo quali sono i vantaggi delle API composite.

  • Chiamate REST API multiple per una singola chiamata
  • La velocità di elaborazione può essere aumentata raggruppando le richieste secondarie
  • Migliora le prestazioni dell’applicazione
  • Non è necessaria alcuna codifica aggiuntiva in Salesforce
  • Singola chiamata verso i limiti dell’API
  • Risposte sincrone
  • Molteplici modalità di funzionamento delle composite resources
  • Upsert fino a cinque livelli di relazioni profonde
  • Flessibilità nell’inserimento di record correlati o non correlati
  • Si può fare una sotto-richiesta GET e il risultato può essere inserito nella successiva sotto-richiesta POST
  • Può gestire oggetti e dati più complicati e correlati

Tipi di Composite Resources

Sono disponibili differenti composite resources:

  1. Composite API
  2. Batch
  3. SObject Tree
  4. SObject Collection
  5. Grapths

Salesforce Composite API

Vediamo l’API composita. L’api composita ha le stesse caratteristiche delle risorse composite. Abbiamo visto in precedenza che può eseguire una serie di richieste api in una singola chiamata. L’output di una richiesta può essere dato come input ai corpi di risposta di una richiesta successiva. Lo stato Http della richiesta viene restituito in un singolo corpo di risposta. Conta anche come una singola chiamata api
ai fini dei limiti dell’API. I formati sono json e xml. Vedere la registrazione per una dimostrazione di composite usando postman.

Esempio di richiesta e URL.

URL : /services/data/vXX.X/composite

Campione body di Request.

{
"compositeRequest" : [
  {
  "method" : "POST",
  "url" : "/services/data/v52.0/sobjects/Account",
  "referenceId" : "refAccount",
  "body" : { "Name" : "APEX HOURS" }
  },
  {
  "method" : "POST",
  "url" : "/services/data/v52.0/sobjects/Contact",
  "referenceId" : "refContact",
  "body" : { 
    "LastName" : "AMIT CHAUDHARY",
    "AccountId" : "@{refAccount.id}"
    }
  }]
}

Salesforce Composite Batch

La prossima composite resource che vedremo è il composite batch. Può eseguire fino a 25 richieste secondarie in una singola richiesta. Ogni sotto-richiesta viene conteggiata nei limiti di velocità. Le richieste secondarie sono indipendenti. Non è possibile passare informazioni tra di esse e le richieste secondarie vengono eseguite in modo seriale nel loro ordine. I formati sono json e xml e l’url avrà la versione composite api seguita da batch. Se una richiesta batch non viene completata entro 10 minuti, il batch va in timeout.

  1. Fino a 25 richieste secondarie in una singola richiesta.
  2. Ogni sotto-richiesta viene conteggiata ai fini dei limiti di velocità.
  3. Le sotto-richieste sono indipendenti.
  4. Ordine di esecuzione seriale

URL di esempio  /services/data/vXX.X/composite/batch

{
  "batchRequests" : [
    {
    "method" : "PATCH",
    "url" : "v52.0/sobjects/account/001D000000K0fXOIAZ",
    "richInput" : {"Name" : "ApexHours"}
    },
    {
    "method" : "GET",
    "url" : "v52.0/sobjects/account/001D000000K0fXOIAZ?fields=Name,Type"
    }
 ]
}

SObject Collection

Anche questo esegue un’azione su più record in un’unica richiesta. Il request body è diverso da quello del composite. Possiamo osservare fino a 200 richieste get delete patch post sono disponibili e l’url gestirà sObjects alla fine si può scegliere se fare il rollback dell’intera richiesta (request) quando si verifica un errore. L’elenco può contenere oggetti di tipo diverso, compresi gli oggetti custom. Gli oggetti vengono creati nell’ordine in cui sono elencati.

  • Esegue azioni su più record in un’unica richiesta
  • Una richiesta può gestire un solo oggetto
  • Inserisce fino a 200 records
  • L’elenco può contenere oggetti di diversi tipi, compresi gli oggetti custom
  • Gli oggetti vengono creati nell’ordine in cui sono elencati.

Esempio di URI POST /services/data/vXX.X/composite/sobjects

{
   "allOrNone" : false,
   "records" : [{
      "attributes" : {"type" : "Account"},
      "Name" : "example.com",
      "BillingCity" : "Alpharetta"
   }, 
   {
      "attributes" : {"type" : "Contact"},
      "LastName" : "Chaudhary",
      "FirstName" : "Amit"
   }]
}

Salesforce Composite Tree

Crea uno o più sObject trees con record radice (root) del tipo specificato. Un sObject trees è un insieme di record annidati, genitore-figlio, con un singolo record radice (root).

  • sObject trees con i records root del tipo specificato
  • Inserire fino a un totale di 200 record in tutti i trees
  • SObject trees fino a cinque livelli di profondità
  • Supporto solo per l’inserimento. Nessun upsert.

URL : /services/data/vXX.X/composite/tree/sObjectName

{
"records" :[{
    "attributes" : {"type" : "Account", "referenceId" : "ref1"},
    "name" : "ApexHours",
    "phone" : "1234567890",
    "website" : "www.apexhours.com",
    "numberOfEmployees" : "1",
    "industry" : "Education",
    "Contacts" : {
      "records" : [{
         "attributes" : {"type" : "Contact", "referenceId" : "ref2"},
         "lastname" : "Chaudhary",
         "title" : "amit",
         "email" : "amit.salesforce21@gmail.com"
         },{         
         "attributes" : {"type" : "Contact", "referenceId" : "ref3"},
         "lastname" : "Pooja",
         "title" : "Chugh",
         "email" : "amit.salesforce21@gmail.com"
         }]
      }
    },{
    "attributes" : {"type" : "Account", "referenceId" : "ref4"},
    "name" : "Amit Salesforce",
    "phone" : "1234567890",
    "website" : "www.salesforce2.com",
    "numberOfEmployees" : "100",
    "industry" : "Banking"
     }]
}

Composite Graphs

Il prossimo è il composite graphs rilasciato nell’inverno 21.

  • Forniscono un modo migliore per eseguire composite requests
  • Può assemblare una serie più complicata e completa di oggetti e record correlati.
  • allorNone è sempre vero per i graph
  • Composite graphs possono gestire 500 records.

URL: /services/data/vXX.X/sobjects/sObject

Composite graphs I grafi compositi sono chiamati nodi per ogni richiesta secondaria. Possono esserci più nodi, poiché i composite graphs sono più avanzati e complicati, quindi li vedremo in dettaglio nella registrazione.

Limiti e Considerazioni

  • Non tutte le composite resources supportano la creazione e l’aggiornamento.
  • Si applica il limite di chiamate API in entrata
  • Risoluzione dei problemi
  • L’ID del riferimento non è presente nella risposta per le raccolte batch e sObject
  • Lo stesso id di riferimento non può essere utilizzato nella stessa transazione – Problema di id di riferimento duplicato
  • Lo stesso record di id esterno dello stesso oggetto non può essere utilizzato nella stessa transazione.

 

 

 

Fonte: tradotto da ApexHours

Share:

administrator