25 de septiembre de 2022

Como desarrollar un Webservice usando Apex

¡Buenas a tod@s! Hoy vamos a aprender como exponer un Webservice desde Salesforce usando Apex.

¿Webservice? ¿Eso se come?

En primer lugar, un Webservice es un servicio expuesto a internet que puede servir para consultar, eliminar o añadir registros a una base de datos. Para establecer esta conexión hemos de conocer diferentes aspectos de como se realiza.

Endpoint: El endpoint es la url que se expone a internet.

Ej: «https://instance.salesforce.com/services/apexrest/Account/»

URLParam: En el endpoint podemos añadir diferente informacion que el servicio es capaz de extraer y tratar.

Ej: «https://instance.salesforce.com/services/apexrest/Account?id=111«

Headers: A pesar de que se pueden utilizar los URLParams para envío de datos sencillos, en el caso de necesitar enviar información mas compleja se puede conseguir mediante headers.

Comencemos

Un ejemplo de como exponer un Webservice con Apex es el siguiente:

@RestResource(urlMapping='/Post/*')
global with sharing class servicePost {
 
    @HttpGet
    global static Post__c getPost() {
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        String postId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
        Post__c result = [SELECT Id, Title, Writer FROM Post__c WHERE Id = :postId];
        return result;
    }
}

En este ejemplo, cuando el sistema externo nos invoca mediante una petición REST, el método getPost() se ejecuta. En primer lugar, obtenemos el postId que nos facilita el sistema externo y mediante una query lo buscamos en nuestra base de datos. Si lo encontramos devolvemos el Id, titulo y escritor del post como respuesta a esa llamada REST.

Mediante la notación @RestResource el sistema interpreta que quieres exponer un servicio y crea un endpoint con los puntos que especifiques dentro del urlMapping.

La notación @httpGet especifica un método accesible en el servicio y siempre que se haga un Get se ejecutará ese bloque de código. Esta notación puede ser de diferentes formas:

  • httpGet Consultar información.
  • httpPost Añadir información.
  • httpPatch Actualizar registros.
  • httpDelete Eliminar registros.
  • httpPut Añade o Actualiza registros en caso que existan.

Otra peculiaridad de estos métodos es que nos brindan la posibilidad de usar los objetos dedicados RestRequest, RestResponse, RestHeaders en los que se recogen la información que se envía, permitiendo tratar dicha información en nuestra base de datos.

Sabiendo esto gente, no tendréis problemas para generar un webservice en Salesforce. Espero que os haya sido útil, si es así no dudéis en comentar. Intentaré responder vuestras peticiones con la mayor rapidez posible.

Para ampliar conocimiento aqui os dejo el maravilloso Trailhead que nos facilita Salesforce.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.