Integrating external systems with Salesforce requires choosing between SOAP and REST APIs. This guide explains the differences and when to use each approach.
public class RESTCalloutExample {
public static void callExternalAPI() {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.example.com/users');
request.setMethod('GET');
request.setHeader('Authorization', 'Bearer token');
request.setTimeout(120000);
HttpResponse response = http.send(request);
if (response.getStatusCode() == 200) {
System.debug('Response: ' + response.getBody());
}
}
}
public class SOAPCalloutExample {
public static void callSOAPService() {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.example.com/soap');
request.setMethod('POST');
request.setHeader('Content-Type', 'text/xml;charset=UTF-8');
request.setHeader('SOAPAction', 'http://example.com/action');
String soapBody = ''
+ ''
+ ''
+ '123 '
+ ' '
+ ' ';
request.setBody(soapBody);
request.setTimeout(120000);
HttpResponse response = http.send(request);
System.debug('SOAP Response: ' + response.getBody());
}
}
| Feature | REST | SOAP |
|---|---|---|
| Protocol | HTTP Methods (GET, POST, PUT, DELETE) | XML-based, typically over HTTP |
| Message Format | JSON (preferred), XML, Plain Text | XML (strict) |
| Performance | Faster, lightweight | Slower, verbose |
| Learning Curve | Easy | Steep |
| Caching | Built-in HTTP caching | Limited caching |
| Error Handling | HTTP Status Codes | SOAP Faults in XML |
Is it a modern API?
├─ YES → Use REST
└─ NO → Is it a legacy system?
├─ YES → Check if it has SOAP/WSDL
│ ├─ YES → Use SOAP
│ └─ NO → Use REST
└─ NO → Use REST (modern approach)