Apex REST এবং SOAP Web Services Salesforce-এর মাধ্যমে অন্য সিস্টেমের সাথে ডেটা এক্সচেঞ্জ এবং ইন্টিগ্রেশন করতে ব্যবহৃত দুটি সাধারণ প্রক্রিয়া। Salesforce-এ Apex ব্যবহার করে REST এবং SOAP উভয় ধরনের Web Services তৈরি করা সম্ভব, যা Salesforce থেকে ডেটা প্রেরণ এবং গ্রহণে সহায়ক হয়।
Apex REST Web Services হলো RESTful APIs, যা Salesforce ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন সম্পন্ন করতে সাহায্য করে। REST Web Services HTTP পদ্ধতি, যেমন GET
, POST
, PUT
, এবং DELETE
ব্যবহার করে কাজ করে। এটি সাধারণত JSON ফরম্যাটে ডেটা প্রেরণ ও গ্রহণ করে।
GET
, POST
, PUT
, এবং DELETE
ব্যবহার করে CRUD অপারেশন সম্পন্ন করা যায়।Apex REST Class
@RestResource(urlMapping='/AccountAPI/*')
global with sharing class AccountRESTService {
// GET method to retrieve account data
@HttpGet
global static Account getAccount() {
String accId = RestContext.request.params.get('id');
return [SELECT Id, Name, Industry FROM Account WHERE Id = :accId LIMIT 1];
}
// POST method to create a new account
@HttpPost
global static String createAccount(String name, String industry) {
Account acc = new Account(Name = name, Industry = industry);
insert acc;
return acc.Id;
}
}
urlMapping
প্যারামিটার ব্যবহার করে URL নির্ধারণ করা হয়েছে, যেমন /AccountAPI/
.GET
মেথড ব্যবহার করে একটি নির্দিষ্ট Account ডেটা রিটার্ন করা হয়েছে।POST
মেথড ব্যবহার করে নতুন Account তৈরি করা হয়েছে।GET Request
GET /services/apexrest/AccountAPI/?id=0011j00000XXXXXXX HTTP/1.1
Host: yourinstance.salesforce.com
Authorization: Bearer access_token
POST Request
http
Copy code
POST /services/apexrest/AccountAPI/ HTTP/1.1
Host: yourinstance.salesforce.com
Authorization: Bearer access_token
Content-Type: application/json
{
"name": "New Account",
"industry": "Technology"
}
Apex SOAP Web Services হলো একটি XML ভিত্তিক প্রোটোকল, যা সাধারণত শক্তিশালী ইন্টিগ্রেশনের জন্য ব্যবহৃত হয় এবং WSDL (Web Services Description Language) ব্যবহার করে ডেটা ট্রান্সফার করে। SOAP Web Services XML ফরম্যাটে কাজ করে এবং এটি উচ্চ সুরক্ষা ও নির্ভরযোগ্যতা নিশ্চিত করে।
Apex SOAP Class
global class AccountSOAPService {
webService static Account getAccountById(String accId) {
return [SELECT Id, Name, Industry FROM Account WHERE Id = :accId LIMIT 1];
}
webService static String createAccount(String name, String industry) {
Account acc = new Account(Name = name, Industry = industry);
insert acc;
return acc.Id;
}
}
webService
কিওয়ার্ড ব্যবহার করে SOAP Service তৈরি করা হয়েছে।SOAP API ব্যবহার করতে WSDL জেনারেট করতে হবে:
Setup
-এ যান।Apex Classes
সেকশনে যান এবং Generate WSDL
বাটন ক্লিক করুন।বৈশিষ্ট্য | REST Web Services | SOAP Web Services |
---|---|---|
ডেটা ফরম্যাট | JSON | XML |
প্রোটোকল | HTTP | HTTP, SMTP, TCP |
অপারেশন | GET, POST, PUT, DELETE | নির্দিষ্ট মেথডের মাধ্যমে নির্ধারিত অপারেশন |
সুরক্ষা | কম সুরক্ষা (কিন্তু OAuth 2.0 এবং TLS ব্যবহারযোগ্য) | সাধারণত উচ্চ সুরক্ষা এবং নির্ভরযোগ্য |
ক্লায়েন্ট ব্যবহার | ব্রাউজার, মোবাইল অ্যাপ্লিকেশন, IoT | এন্টারপ্রাইজ অ্যাপ্লিকেশন ও ডিস্ট্রিবিউটেড সিস্টেম |
সহজতা | সহজ এবং দ্রুত | শক্তিশালী কিন্তু জটিল |
@RestResource(urlMapping='/AccountAPI/*')
global with sharing class AccountRESTService {
@HttpGet
global static Account getAccount() {
String accId = RestContext.request.params.get('id');
return [SELECT Id, Name, Industry FROM Account WHERE Id = :accId LIMIT 1];
}
@HttpPost
global static String createAccount(String name, String industry) {
Account acc = new Account(Name = name, Industry = industry);
insert acc;
return acc.Id;
}
}
global class AccountSOAPService {
webService static Account getAccountById(String accId) {
return [SELECT Id, Name, Industry FROM Account WHERE Id = :accId LIMIT 1];
}
webService static String createAccount(String name, String industry) {
Account acc = new Account(Name = name, Industry = industry);
insert acc;
return acc.Id;
}
}
@isTest
public class AccountWebServiceTest {
@isTest
static void testRestGetAccount() {
RestRequest req = new RestRequest();
RestResponse res = new RestResponse();
req.requestUri = '/services/apexrest/AccountAPI/';
req.addParameter('id', '0011j00000XXXXXXX');
req.httpMethod = 'GET';
RestContext.request = req;
RestContext.response = res;
Account result = AccountRESTService.getAccount();
System.assertNotEquals(null, result, 'Account should not be null');
}
@isTest
static void testSoapGetAccountById() {
Account acc = new Account(Name = 'Test Account', Industry = 'Technology');
insert acc;
Account result = AccountSOAPService.getAccountById(acc.Id);
System.assertEquals(acc.Id, result.Id, 'Account ID should match');
}
}
GET
মেথড টেস্ট করে, যা একটি Account রেকর্ড রিটার্ন করে।getAccountById
মেথড টেস্ট করে, যা একটি নির্দিষ্ট Account রেকর্ড রিটার্ন করে।Apex REST এবং SOAP Web Services Salesforce থেকে অন্য সিস্টেমে ডেটা প্রেরণ এবং গ্রহণের জন্য ব্যবহৃত হয়। REST Web Services সাধারণত দ্রুত এবং JSON ফরম্যাটে কাজ করে, যেখানে SOAP Web Services XML ফরম্যাটে কাজ করে এবং উচ্চ সুরক্ষা প্রদান করে। প্রতিটি Web Service টেস্টিং এবং গভর্নর লিমিট মেনে চলার মাধ্যমে একটি নিরাপদ ও কার্যকর ইন্টিগ্রেশন নিশ্চিত করা যায়।
Apex REST Web Services হলো Salesforce-এ তৈরি করা RESTful API, যা Salesforce ডেটা এবং লজিক্যাল রিসোর্সকে বাহ্যিক সিস্টেমের সাথে শেয়ার করতে ব্যবহৃত হয়। Apex REST Web Services ব্যবহার করে Salesforce ডেটা এক্সটার্নাল অ্যাপ্লিকেশনের সাথে সহজেই শেয়ার করা যায় এবং বাহ্যিক অ্যাপ্লিকেশন থেকে Salesforce-এর বিভিন্ন রিসোর্স অ্যাক্সেস করা যায়। Salesforce-এ Apex REST API নির্মাণের জন্য @RestResource অ্যানোটেশন ব্যবহার করা হয়, যা নির্দিষ্ট রিসোর্স URL বা API এন্ডপয়েন্ট তৈরি করে।
Apex REST Web Services এর মাধ্যমে Salesforce এ REST API তৈরি করা সম্ভব হয়, যা অন্যান্য অ্যাপ্লিকেশন বা পরিষেবা সহজে Salesforce ডেটা এবং লজিক ব্যবহার করতে পারে। Apex REST API বিভিন্ন HTTP মেথড যেমন GET, POST, PUT, DELETE ইত্যাদি ব্যবহার করে কাজ করে। Apex ক্লাসে @RestResource অ্যানোটেশন এবং নির্দিষ্ট মেথডের জন্য @HttpGet, @HttpPost, @HttpPut, এবং @HttpDelete অ্যানোটেশন ব্যবহার করে RESTful মেথড তৈরি করা হয়।
নিচে একটি সাধারণ উদাহরণ দেয়া হলো, যেখানে Apex REST Web Service তৈরি করা হয়েছে, যা Account রেকর্ডের তথ্য রিটার্ন, ক্রিয়েট, আপডেট, এবং ডিলিট করার কাজ করে।
@RestResource(urlMapping='/AccountService/*')
global with sharing class AccountService {
// HTTP GET Method: নির্দিষ্ট Account রেকর্ড রিটার্ন করে
@HttpGet
global static Account getAccountById() {
RestRequest req = RestContext.request;
String accountId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
Account acc = [SELECT Id, Name, Industry FROM Account WHERE Id = :accountId LIMIT 1];
return acc;
}
// HTTP POST Method: নতুন Account রেকর্ড তৈরি করে
@HttpPost
global static String createAccount(String name, String industry) {
Account acc = new Account(Name = name, Industry = industry);
insert acc;
return acc.Id;
}
// HTTP PUT Method: Account রেকর্ড আপডেট করে
@HttpPut
global static String updateAccount(String accountId, String name, String industry) {
Account acc = [SELECT Id FROM Account WHERE Id = :accountId LIMIT 1];
acc.Name = name;
acc.Industry = industry;
update acc;
return 'Account updated successfully';
}
// HTTP DELETE Method: নির্দিষ্ট Account রেকর্ড ডিলিট করে
@HttpDelete
global static String deleteAccount(String accountId) {
Account acc = [SELECT Id FROM Account WHERE Id = :accountId LIMIT 1];
delete acc;
return 'Account deleted successfully';
}
}
AccountService
নামে তৈরি করা হয়েছে, যা বাহ্যিক সিস্টেম থেকে এক্সেস করা যায়।getAccountById
মেথড HTTP GET রিকোয়েস্টে Account রেকর্ড রিটার্ন করে।createAccount
মেথড HTTP POST রিকোয়েস্টে নতুন Account রেকর্ড তৈরি করে।updateAccount
মেথড HTTP PUT রিকোয়েস্টে Account রেকর্ড আপডেট করে।deleteAccount
মেথড HTTP DELETE রিকোয়েস্টে Account রেকর্ড ডিলিট করে।@RestResource
দিয়ে নির্দিষ্ট URL বা API Endpoint তৈরি করা হয়, যা বাহ্যিক অ্যাপ্লিকেশনকে Salesforce ডেটা বা লজিক এক্সেস করতে সহায়তা করে।global
অ্যাক্সেস মডিফায়ার ব্যবহার করতে হয়, যাতে বাহ্যিক সিস্টেম এই মেথডগুলো অ্যাক্সেস করতে পারে।Apex REST Web Services Salesforce-এ RESTful API তৈরি করতে ব্যবহৃত হয়, যা বাহ্যিক সিস্টেমের সাথে সহজে Salesforce ডেটা এবং লজিক শেয়ার করতে সহায়ক। Apex REST Web Services বিভিন্ন HTTP মেথড যেমন GET, POST, PUT, DELETE সাপোর্ট করে এবং JSON ফরম্যাটে ডেটা এক্সচেঞ্জ করে, যা অন্য সিস্টেমের সাথে এক্সচেঞ্জিং ডেটা সহজ করে তোলে। Salesforce ডেভেলপমেন্টে Apex REST Web Services গুরুত্বপূর্ণ ভূমিকা পালন করে এবং এক্সটার্নাল অ্যাপ্লিকেশনের সাথে দ্রুত ও কার্যকর সংযোগ স্থাপন করতে সহায়ক।
REST API Integration হলো Salesforce-এ RESTful APIs ব্যবহার করে অন্য সিস্টেমের সাথে ডেটা আদান-প্রদানের একটি পদ্ধতি। REST API Integration এর মাধ্যমে HTTP মেথড যেমন GET, POST, PUT, এবং DELETE ব্যবহার করে ডেটা প্রক্রিয়াকরণ করা হয়। REST API Integration সাধারণত JSON ফরম্যাটে ডেটা পাঠায় এবং গ্রহণ করে, যা ব্যবহারকারী এবং সিস্টেমের মধ্যে দ্রুত ও সহজ ডেটা এক্সচেঞ্জ নিশ্চিত করে।
HTTP মেথডের মাধ্যমে REST API-তে বিভিন্ন CRUD (Create, Read, Update, Delete) অপারেশন করা হয়:
GET মেথড ব্যবহার করে নির্দিষ্ট ডেটা রিট্রিভ করা হয়। এটি সাধারণত URL এর মাধ্যমে ডেটা পাঠায় এবং রেসপন্সে JSON ফরম্যাটে ডেটা রিটার্ন করে।
public class RESTGetExample {
public static void getAccount(String accountId) {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://externalapi.com/api/accounts/' + accountId);
request.setMethod('GET');
request.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
HttpResponse response = http.send(request);
if (response.getStatusCode() == 200) {
System.debug(response.getBody());
} else {
System.debug('Error: ' + response.getStatusCode() + ' - ' + response.getStatus());
}
}
}
POST মেথড ব্যবহার করে নতুন ডেটা তৈরি করা হয়। এটি সাধারণত JSON বা XML ফরম্যাটে ডেটা রিকোয়েস্ট বডিতে প্রেরণ করে।
public class RESTPostExample {
public static void createAccount(String name, String industry) {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://externalapi.com/api/accounts');
request.setMethod('POST');
request.setHeader('Content-Type', 'application/json');
request.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
String requestBody = JSON.serialize(new Map<String, Object>{
'name' => name,
'industry' => industry
});
request.setBody(requestBody);
HttpResponse response = http.send(request);
if (response.getStatusCode() == 201) {
System.debug('Account Created: ' + response.getBody());
} else {
System.debug('Error: ' + response.getStatusCode() + ' - ' + response.getStatus());
}
}
}
application/json
কনটেন্ট টাইপ সেট করা হয়েছে।PUT মেথড ব্যবহার করে বিদ্যমান ডেটা আপডেট করা হয়। এটি সাধারণত JSON ফরম্যাটে ডেটা পাঠায় এবং সার্ভারে ডেটা আপডেট করে।
public class RESTPutExample {
public static void updateAccount(String accountId, String name, String industry) {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://externalapi.com/api/accounts/' + accountId);
request.setMethod('PUT');
request.setHeader('Content-Type', 'application/json');
request.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
String requestBody = JSON.serialize(new Map<String, Object>{
'name' => name,
'industry' => industry
});
request.setBody(requestBody);
HttpResponse response = http.send(request);
if (response.getStatusCode() == 200) {
System.debug('Account Updated: ' + response.getBody());
} else {
System.debug('Error: ' + response.getStatusCode() + ' - ' + response.getStatus());
}
}
}
DELETE মেথড ব্যবহার করে নির্দিষ্ট ডেটা রেকর্ড মুছে ফেলা হয়। এটি URL এর মাধ্যমে রেকর্ডের আইডি ব্যবহার করে অপারেশন সম্পন্ন করে।
public class RESTDeleteExample {
public static void deleteAccount(String accountId) {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://externalapi.com/api/accounts/' + accountId);
request.setMethod('DELETE');
request.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
HttpResponse response = http.send(request);
if (response.getStatusCode() == 204) {
System.debug('Account Deleted');
} else {
System.debug('Error: ' + response.getStatusCode() + ' - ' + response.getStatus());
}
}
}
Exception Handling: REST API কলের সময় Exception Handling নিশ্চিত করতে try-catch
ব্লক ব্যবহার করুন।
try {
// HTTP request and response
} catch (Exception e) {
System.debug('Error occurred: ' + e.getMessage());
}
Proper Authentication: API কলের জন্য উপযুক্ত Authentication (যেমন OAuth 2.0 বা Bearer Token) নিশ্চিত করুন।
Limit API Calls: API কলের সংখ্যা সীমিত করুন এবং খুব প্রয়োজনীয় হলে ব্যবহার করুন, যাতে গভর্নর লিমিট অতিক্রম না করে।
Use Caching (If Possible): ডেটা ফ্রিকোয়েন্টলি পরিবর্তন না হলে ক্যাশিং ব্যবহার করুন, যা সার্ভারের লোড কমায়।
Test Coverage নিশ্চিত করুন: প্রতিটি REST API মেথডের জন্য টেস্ট ক্লাস লিখে ৭৫% কোড কাভারেজ নিশ্চিত করুন।
public class AccountAPIService {
public static String createAccount(String name, String industry) {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://externalapi.com/api/accounts');
request.setMethod('POST');
request.setHeader('Content-Type', 'application/json');
request.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
String requestBody = JSON.serialize(new Map<String, Object>{
'name' => name,
'industry' => industry
});
request.setBody(requestBody);
HttpResponse response = http.send(request);
if (response.getStatusCode() == 201) {
return response.getBody();
} else {
throw new CalloutException('Failed to create account. Status: ' + response.getStatusCode());
}
}
}
@isTest
public class AccountAPIServiceTest {
@isTest
static void testCreateAccount() {
Test.startTest();
HttpResponse mockResponse = new HttpResponse();
mockResponse.setStatusCode(201);
mockResponse.setBody('{"id":"0011j00000XXXXXXX"}');
Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator(mockResponse));
String result = AccountAPIService.createAccount('Test Account', 'Technology');
System.assertNotEquals(null, result, 'Account ID should not be null');
Test.stopTest();
}
// Mock Class for HTTP Callout
public class MockHttpResponseGenerator implements HttpCalloutMock {
private HttpResponse response;
public MockHttpResponseGenerator(HttpResponse response) {
this.response = response;
}
public HttpResponse respond(HttpRequest req) {
return response;
}
}
}
REST API Integration Salesforce-এ HTTP Methods ব্যবহার করে ডেটা প্রক্রিয়াকরণের একটি কার্যকর পদ্ধতি। Apex-এর মাধ্যমে GET, POST, PUT, এবং DELETE মেথড ব্যবহার করে API কল করে ডেটা এক্সচেঞ্জ করা যায়। Exception Handling, Proper Authentication, এবং Test Coverage নিশ্চিত করার মাধ্যমে একটি নিরাপদ এবং নির্ভরযোগ্য API Integration নিশ্চিত করা যায়।
SOAP Web Services এবং WSDL (Web Services Description Language) ব্যবহার করে Salesforce-এ এমন একটি অ্যাপ্লিকেশন তৈরি করা যায়, যা XML ভিত্তিক প্রোটোকল ব্যবহার করে অন্যান্য সিস্টেমের সাথে ডেটা আদান-প্রদান করতে সক্ষম। SOAP (Simple Object Access Protocol) Web Services মূলত Salesforce এবং অন্যান্য অ্যাপ্লিকেশন বা প্ল্যাটফর্মের মধ্যে নিরাপদ এবং নির্ভরযোগ্য যোগাযোগের জন্য ব্যবহৃত হয়। WSDL হলো XML ফাইল, যা SOAP Web Services এর কার্যক্রম এবং এন্ডপয়েন্ট সম্পর্কে বিস্তারিত তথ্য প্রদান করে।
SOAP Web Services Salesforce এ একটি স্ট্যান্ডার্ড প্রোটোকল, যা নির্দিষ্ট কার্যক্রম এবং ডেটা ট্রান্সফার করতে XML ফরম্যাট ব্যবহার করে। SOAP Web Services নির্ভরযোগ্য এবং নিরাপদ ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয় এবং WSDL ব্যবহার করে API-এর ফাংশন ডিফাইন করা হয়।
SOAP Web Services সাধারণত একটি SOAP Envelope দিয়ে শুরু হয়, যার মধ্যে Header এবং Body অংশ থাকে।
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<!-- হেডার ইনফরমেশন -->
</soap:Header>
<soap:Body>
<!-- সার্ভিসের জন্য প্রয়োজনীয় ডেটা -->
</soap:Body>
</soap:Envelope>
WSDL হলো একটি XML ভিত্তিক ভাষা, যা SOAP Web Services এর কার্যকলাপ এবং এন্ডপয়েন্ট সম্পর্কে বিস্তারিত তথ্য প্রদান করে। WSDL ফাইল ব্যবহার করে SOAP Web Services-এর অপারেশন, প্যারামিটার, এবং রিটার্ন টাইপ সম্পর্কে তথ্য জানা যায়, যা অন্যান্য অ্যাপ্লিকেশন এই সার্ভিস ব্যবহার করার জন্য প্রয়োজন।
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://example.com/">
<types>
<!-- ডেটা টাইপ সংজ্ঞায়িত করা হয়েছে -->
</types>
<message name="getAccountRequest">
<!-- ইনপুট প্যারামিটার -->
</message>
<message name="getAccountResponse">
<!-- রেসপন্স প্যারামিটার -->
</message>
<portType name="AccountServicePortType">
<operation name="getAccount">
<input message="tns:getAccountRequest"/>
<output message="tns:getAccountResponse"/>
</operation>
</portType>
<binding name="AccountServiceBinding" type="tns:AccountServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getAccount">
<soap:operation soapAction="getAccount"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="AccountService">
<port name="AccountServicePort" binding="tns:AccountServiceBinding">
<soap:address location="http://example.com/AccountService"/>
</port>
</service>
</definitions>
getAccountRequest
এবং getAccountResponse
SOAP মেসেজ হিসেবে ব্যবহার হবে।AccountServicePortType
অপারেশন ডিফাইন করে।Salesforce-এ SOAP Web Services তৈরি এবং ব্যবহার করতে Apex Web Service এবং WSDL ফাইল ব্যবহার করা হয়। Salesforce-এর WSDL ফাইল জেনারেট করে তা বাহ্যিক সিস্টেমে ইমপোর্ট করা হয়, যাতে বাহ্যিক সিস্টেম SOAP কল করতে পারে।
নিচে একটি সাধারণ Apex SOAP Web Service ক্লাস দেখানো হলো, যেখানে Account তথ্য রিটার্ন করা হচ্ছে।
global class AccountService {
// WSDL ফাইলে SOAP মেথড হিসেবে শেয়ার হবে
webService static Account getAccountById(Id accountId) {
return [SELECT Id, Name, Industry FROM Account WHERE Id = :accountId LIMIT 1];
}
}
SOAP Web Services এবং WSDL Salesforce এবং অন্যান্য সিস্টেমের মধ্যে নির্ভরযোগ্য এবং সিকিউর ডেটা ট্রান্সফার নিশ্চিত করে। SOAP Web Services XML ভিত্তিক স্ট্রাকচার ব্যবহার করে ডেটা আদান-প্রদান করে এবং WSDL ফাইল ব্যবহার করে এর স্ট্রাকচার ও এন্ডপয়েন্ট সম্পর্কে তথ্য প্রদান করে। Salesforce ডেভেলপমেন্টে SOAP Web Services এবং WSDL-এর ব্যবহার বড় এন্টারপ্রাইজ সিস্টেমে কার্যকর ও নিরাপদ ডেটা শেয়ারিং নিশ্চিত করে।
External API Callouts এবং Web Service Integration হলো Salesforce-এ ব্যবহারকারীর অ্যাপ্লিকেশনকে বাইরের সিস্টেমের সাথে সংযুক্ত করার একটি প্রক্রিয়া। এই Integration এর মাধ্যমে Salesforce অন্যান্য অ্যাপ্লিকেশন থেকে ডেটা গ্রহণ এবং প্রেরণ করতে পারে, যেমন পেমেন্ট গেটওয়ে, থার্ড-পার্টি ডেটাবেস, বা অন্য কোনো API থেকে ডেটা রিকোয়েস্ট করা।
External API Callouts হল Salesforce-এর মাধ্যমে বাইরের কোনো সিস্টেমের API-তে রিকোয়েস্ট পাঠানো এবং রেসপন্স গ্রহণ করার একটি প্রক্রিয়া। সাধারণত HTTP (REST) এবং SOAP (XML) API Callouts এর মাধ্যমে বাইরের সিস্টেমের সাথে যোগাযোগ করা হয়।
HttpRequest
অবজেক্ট তৈরি করুন।Http
অবজেক্টের send()
মেথড ব্যবহার করে HttpRequest
পাঠান।HttpResponse
অবজেক্টের মাধ্যমে API এর রেসপন্স সংরক্ষণ করুন এবং প্রসেস করুন।public class APICalloutExample {
public static String makeGetRequest(String endpoint) {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint(endpoint);
request.setMethod('GET');
request.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
try {
HttpResponse response = http.send(request);
if (response.getStatusCode() == 200) {
return response.getBody();
} else {
throw new CalloutException('Error: ' + response.getStatusCode() + ' - ' + response.getStatus());
}
} catch (Exception e) {
System.debug('API Callout Failed: ' + e.getMessage());
return null;
}
}
}
GET
রিকোয়েস্ট করে এবং JSON বা XML ফরম্যাটে রেসপন্স গ্রহণ করে।Salesforce অন্যান্য অ্যাপ্লিকেশন বা সিস্টেমের সাথে SOAP এবং REST Web Services এর মাধ্যমে ইন্টিগ্রেশন করতে পারে। SOAP Web Services XML ফরম্যাটে ডেটা প্রক্রিয়াকরণ করে এবং WSDL (Web Services Description Language) ব্যবহার করে ডেটা গঠন নির্ধারণ করে। REST Web Services JSON ফরম্যাটে ডেটা প্রক্রিয়াকরণ করে এবং HTTP প্রোটোকল ব্যবহার করে।
// WSDL আমদানি করলে তৈরি হওয়া Apex ক্লাসের উদাহরণ
public class SampleSOAPWebService {
public String exampleMethod(String param) {
// SOAP Request and Response
}
}
Test.setMock() ব্যবহার করুন: API Callouts টেস্টিং করার জন্য HttpCalloutMock ব্যবহার করুন এবং Test Coverage নিশ্চিত করুন।
@isTest
private class MockHttpCallout implements HttpCalloutMock {
public HttpResponse respond(HttpRequest req) {
HttpResponse res = new HttpResponse();
res.setStatusCode(200);
res.setBody('{"message": "Test Successful"}');
return res;
}
}
@isTest
public static void testAPICallout() {
Test.setMock(HttpCalloutMock.class, new MockHttpCallout());
String response = APICalloutExample.makeGetRequest('https://example.com/api');
System.assertNotEquals(null, response, 'Response should not be null');
}
Exception Handling এবং Retry Mechanism: API Callout ব্যর্থ হলে Exception Handling এবং Retry Mechanism নিশ্চিত করুন।
Caching: একই ডেটা বারবার রিকোয়েস্ট না করে ক্যাশিং ব্যবহার করুন, যা সার্ভারের লোড কমায়।
Governor Limits মনিটরিং: গভর্নর লিমিট অতিক্রম এড়াতে গভর্নর লিমিট মেনে API Callouts পরিচালনা করুন।
Secure Authentication: OAuth 2.0, API Key, বা Bearer Token ব্যবহার করে নিরাপদ অ্যাক্সেস নিশ্চিত করুন।
ধাপ | REST API Integration | SOAP Web Service Integration |
---|---|---|
Data Format | JSON | XML |
HTTP Methods | GET, POST, PUT, DELETE | SOAP নির্দিষ্ট মেথড |
Authentication | Bearer Token, OAuth 2.0 | WSDL অনুযায়ী নির্ধারিত |
Testing | HttpCalloutMock এবং Test.setMock() ব্যবহার | SOAP UI বা Web Service Mock |
Error Handling | Exception Handling এবং Logging | SOAP Fault এবং Exception Handling |
External API Callouts এবং Web Service Integration Salesforce থেকে বাইরের সিস্টেমে ডেটা পাঠানো এবং গ্রহণের একটি গুরুত্বপূর্ণ পদ্ধতি। API Callout এর মাধ্যমে REST এবং SOAP উভয় ধরনের Web Services এর সাথে ইন্টিগ্রেশন সম্ভব। সঠিক Exception Handling, Authentication, এবং Testing পদ্ধতি ব্যবহার করে একটি কার্যকর এবং নিরাপদ ইন্টিগ্রেশন নিশ্চিত করা যায়।
common.read_more