Simplificar las llamadas de API a su organización desde el código de Apex

Utilice el nuevo método System.Url.getOrgDomainUrl() para interactuar con las API REST y SOAP de Salesforce en código de Apex. Obtenga extremos para las llamadas de API de la interfaz de usuario para crear y personalizar conjuntos de valores de la lista de selección, campos de personalización y mucho más. Utilice el método actualizado System.UserInfo.getSessionId() para recuperar los Id. de sesión, incluso si su código se ejecuta de forma asíncrona.

Dónde: Este cambio se aplica a Lightning Experience, Salesforce Classic y todas las versiones de la aplicación de Salesforce en Professional Edition, Enterprise Edition, Performance Edition, Unlimited Edition y Database.com Edition.

Por qué: Antes, las organizaciones con Mi dominio activado podían acceder a algunas funciones de API a partir del código de Apex solo después de ajustar la configuración de sitios remotos o credenciales con nombre. Algunos objetos, como DatedExchangeRate, solo son accesibles mediante la API. Ahora puede interactuar con esos objetos utilizando código Apex, creando extremos con el método System.Url.getOrgDomainUrl(). También puede utilizar los extremos para acceder a la información de los límites de su organización, invocar flujos, interactuar con vistas de lista, etc.

A veces, llamadas de API requieren un Id. de sesión y una URL. Puede obtener ese Id. de sesión utilizando el método System.UserInfo.getSessionId(). Este método antes devolvía null en Apex asíncrono, pero ahora devuelve un valor tanto si se ejecuta de forma síncrona como asíncrona.

Cómo: Utilice getOrgDomainUrl() en organizaciones con o sin Mi dominio para recuperar URL canónicas. Por ejemplo: https://yourDomain.my.salesforce.com o, para organizaciones sin Mi dominio activado, https://yourInstance.salesforce.com.

Este ejemplo utiliza la API de interfaz de usuario para obtener valores predeterminados para que pueda duplicar un registro.
Http h = new Http();
HttpRequest req = new HttpRequest();  
req.setEndpoint(Url.getOrgDomainUrl().toExternalForm()
   + '/services/data/v44.0/limits');
req.setMethod('GET');
req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
HttpResponse res = h.send(req);

También puede utilizar getSessionId() tanto de forma síncrona como asíncrona. En Apex asíncrono (Apex por lotes, futuro, colocable en cola o programado), este método devuelve el Id. de sesión solo cuando el código lo ejecuta un usuario válido y activo. Si el código lo ejecuta un usuario interno, como el usuario del proceso automatizado o un usuario de proxy, el método devuelve null.

No puede realizar llamadas de API desde el código JavaScript de sus componentes Lightning, incluyendo desde el código de controlador de Apex relacionado. Este comportamiento no sufrió cambios desde versiones anteriores.