Traducido con IA. Aún no revisado por la comunidad. Leer en inglés

Blog · 18 de septiembre de 2023 · Steve Simpson · Integración

Servicios web en Apex: los bloques básicos para magos de la web

Introducción:

En esta entrada profundizaré en la construcción de servicios web personalizados en Apex en Salesforce. Estos servicios son clave cuando necesitas que un proceso externo interactúe con Salesforce para leer o escribir datos y la API REST estándar se queda corta. Veremos cinco ejemplos de complejidad creciente, desde consultas estándar hasta actualizaciones.

Diagrama: cinco ejemplos de servicios web personalizados en Apex llamados desde Postman: GET que devuelve una lista de registros, GET con objeto de respuesta, GET con parámetro, POST y POST con error

Visión general de los servicios web personalizados

Veremos cinco ejemplos de servicios web personalizados:

GET con una lista estándar de SObjects: obtener datos con una lista estándar de SObjects.

Wrapper con respuesta JSON: mejorar la solicitud GET envolviéndola en una respuesta JSON.

Añadir parámetros: incluir parámetros en la solicitud GET para obtener datos más concretos.

POST para insertar: implementar una solicitud POST para insertar datos.

Devolver mensajes de error: gestionar y devolver correctamente los mensajes de error.

Implementar servicios web personalizados

Ejemplo 1: GET con una lista estándar de SObjects

En este ejemplo definimos un recurso REST con un URI personalizado y especificamos el verbo HTTP (GET). La clase debe declararse como global, y devolvemos una lista de cuentas estándar con una consulta sencilla.

Código Apex: un recurso REST con un método GET que consulta cuentas y devuelve la lista con la serialización predeterminada

Ejemplo 2: wrapper con respuesta JSON

Para controlar los datos que se devuelven al cliente, usamos un objeto de respuesta. En lugar de devolver una lista de SObjects, devolvemos una lista de objetos de respuesta personalizados, una representación ligera de un cliente con solo el ID y el nombre.

Código Apex: un método GET que construye un objeto de respuesta con una lista de clientes

Ejemplo 3: añadir parámetros

Los parámetros son imprescindibles cuando necesitas los datos de un cliente concreto. Leyendo RestContext.params puedes obtener el ID del cliente y usarlo en la cláusula WHERE de la SOQL para filtrar los datos.

Código Apex: un método GET que lee un parámetro customerid de la solicitud y devuelve ese cliente en un objeto de respuesta

Ejemplo 4: POST para insertar

Cuando necesitas escribir datos, usas un método POST. En este ejemplo creamos un objeto de respuesta y un objeto de solicitud. El objeto de solicitud recibe un cliente con un nombre, y usamos el serializador JSON para serializar la solicitud en una clase concreta. Tras crear e insertar una cuenta nueva, se devuelve un estado de éxito.

Código Apex: un método POST que analiza el cuerpo de la solicitud, inserta una cuenta y devuelve un estado de éxito o de error

Ejemplo 5: devolver mensajes de error

Este ejemplo se parece al ejemplo 4, pero incluye la gestión de errores. Si se produce una excepción, el error se captura, se añade a una lista y el código de estado se establece en 500 (o el número que prefieras).

Código Apex: el método POST con gestión de errores, que devuelve el mensaje de error y un código de estado HTTP 500

Conclusión

Con estos ejemplos hemos mostrado los bloques básicos para crear servicios web personalizados en Apex en Salesforce. Empezando por una solicitud GET sencilla, hemos aumentado poco a poco la complejidad, con parámetros, solicitudes POST y gestión de errores.

No te lo pierdas

Gracias por leer; ¡tengo muchas ganas de compartir pronto contigo más aventuras llenas de conocimiento! Sigue atento aquí en www.SteveTechArc.com y en el canal de YouTube @SteveTechArc (opens in a new tab). Suscríbete y amplía tu comprensión de Salesforce y de cómo integrarlo con otros sistemas.

¡Ayudando a cambiar el mundo compartiendo conocimientos de integración con otros arquitectos y con quienes están en camino de serlo!

Transcripción hecha con ayuda de IA

STA 1.8