What is http Callouts in Apex

In our previous blog post we had discussed about What is JSON in Apex. In these blog post we discuss about What is http Callouts in Apex

What is http Callouts in Apex

Basics of HTTP Callouts

HTTP callouts are requests sent from Salesforce to an external system. These requests follow the HTTP protocol, the foundation of data exchange on the web. Essentially, an HTTP callout allows Salesforce to interact with external services, retrieve data, and push information.

  • HTTP Request: This is the message sent from Salesforce to another server, asking for data or sending information.
  • HTTP Response: After the request is processed, the external server sends a response back to Salesforce. This response could be data requested or a status code indicating the result of the request.

In Apex, developers use HTTP callouts to bridge the gap between Salesforce and third-party applications, making the system even more versatile.

Why Use HTTP Callouts in Salesforce?

HTTP callouts in Salesforce open up a world of possibilities. By accessing external web services, businesses can pull in data from various sources, integrate with third-party applications, and extend the functionality of Salesforce. For example:

  • You can integrate with external APIs to retrieve weather updates, financial data, or any other information you need.
  • HTTP callouts can help sync data between Salesforce and external systems like ERPs, payment gateways, and more.

Components of an HTTP Callout in Apex

To perform an HTTP callout in Apex, you need to understand three main components:

  • HTTP Class: This class is responsible for initiating HTTP requests.
  • HTTPRequest Class: This defines the request to be made, including the method (GET, POST), endpoint URL, headers, and body.
  • HTTPResponse Class: This handles the response returned from the external server, including status codes and any data returned.

HTTP Methods in Callouts

When making HTTP callouts, you can use various methods depending on your needs:

  • GET: Used to retrieve information from a server. Example: fetching customer data from an external system.
  • POST: Sends data to the server. Example: submitting a form to an external application.
  • PUT: Updates data on the server. Example: updating user details in an external database.
  • DELETE: Removes data from the server. Example: deleting a record in an external system.

Setting Up HTTP Callouts in Apex

To make an HTTP callout, the following is required:

  1. Write an Apex class using the HTTP, HTTPRequest, and HTTPResponse classes.
  2. Ensure that your Salesforce org has the necessary permissions for external access, such as enabling the remote site settings.

How to Perform a Simple HTTP GET Request

Here’s an example of a simple GET request in Apex:

Http h = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint('https://api.example.com/data');
req.setMethod('GET');
HttpResponse res = h.send(req);
if(res.getStatusCode() == 200) {
System.debug(res.getBody());
}

This code retrieves data from an external endpoint and logs the response body if successful.

Handling HTTP POST Requests

For a POST request, you’d include a body in the request:

Http h = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint('https://api.example.com/submit');
req.setMethod('POST');
req.setHeader('Content-Type', 'application/json');
req.setBody('{"name": "John", "email": "john@example.com"}');
HttpResponse res = h.send(req);
if(res.getStatusCode() == 201) {
System.debug(‘Record created successfully’);
}

Handling HTTP Responses in Apex

Once you send a request, you need to handle the response. The status code indicates the result:

  • 200: Success
  • 201: Resource created
  • 400: Bad request
  • 404: Not found

Parsing the response body can be done using JSON or XML parsers, depending on the format of the returned data.

Handling HTTP Callout Limits

Salesforce enforces limits on HTTP callouts, such as the maximum number of callouts per transaction. It’s essential to manage these limits to avoid hitting governor limits, which could lead to failed transactions.

Synchronous vs. Asynchronous Callouts

  • Synchronous Callouts: The callout waits for a response before continuing execution. These are ideal when immediate feedback is needed.
  • Asynchronous Callouts: The request is sent, and the execution continues without waiting for a response. This is helpful when the callout might take longer.

Error Handling in HTTP Callouts

Error handling is crucial for a smooth user experience. Common errors include timeouts, authentication failures, and endpoint unavailability. Using try-catch blocks in Apex helps handle these gracefully.

Best Practices for HTTP Callouts

Security: Always use HTTPS and ensure proper authentication mechanisms.

Performance: Minimize the number of callouts and handle responses efficiently to optimize performance.

Real-world Use Cases for HTTP Callouts

Integrating with Payment Gateways: Automating payment processing.

Accessing External APIs: Fetching data from external services, like weather forecasts or stock market prices.

Conclusion

HTTP callouts in Apex are powerful tools that enable Salesforce to integrate with external systems. Whether retrieving data or pushing information, they are essential for businesses that require seamless data exchange across platforms.

We want to more about What is http Callouts in Apex Click Here

FAQs

What is the difference between REST and SOAP callouts in Apex?
REST is more lightweight and commonly used for web services, while SOAP is more robust and used for legacy systems.

Can HTTP callouts be performed in batch jobs?
Yes, but the callouts need to be handled asynchronously in batch jobs.

What are the security implications of HTTP callouts?
Always ensure HTTPS is used, and authentication tokens are securely handled.

What is the maximum timeout for an HTTP callout?
The maximum timeout is 120 seconds in Salesforce.

How do I test HTTP callouts in Salesforce?
You can use mock responses in Apex tests to simulate callouts without making real HTTP requests.

In our next blog post we will discuss about What is JQUERY in Salesforce Apex

Spread the love

2 thoughts on “What is http Callouts in Apex

Leave a Reply

Your email address will not be published. Required fields are marked *