Apex REST এবং SOAP Web Services (Apex REST and SOAP Web Services)

Computer Programming - এপেক্স (Apex)
265
265

Apex REST এবং SOAP Web Services Salesforce-এর মাধ্যমে অন্য সিস্টেমের সাথে ডেটা এক্সচেঞ্জ এবং ইন্টিগ্রেশন করতে ব্যবহৃত দুটি সাধারণ প্রক্রিয়া। Salesforce-এ Apex ব্যবহার করে REST এবং SOAP উভয় ধরনের Web Services তৈরি করা সম্ভব, যা Salesforce থেকে ডেটা প্রেরণ এবং গ্রহণে সহায়ক হয়।


Apex REST Web Services

Apex REST Web Services হলো RESTful APIs, যা Salesforce ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন সম্পন্ন করতে সাহায্য করে। REST Web Services HTTP পদ্ধতি, যেমন GET, POST, PUT, এবং DELETE ব্যবহার করে কাজ করে। এটি সাধারণত JSON ফরম্যাটে ডেটা প্রেরণ ও গ্রহণ করে।

Apex REST Web Services এর বৈশিষ্ট্য

  1. HTTP Methods ব্যবহার: GET, POST, PUT, এবং DELETE ব্যবহার করে CRUD অপারেশন সম্পন্ন করা যায়।
  2. JSON ফরম্যাটে ডেটা: REST Web Services JSON ফরম্যাটে ডেটা এক্সচেঞ্জ করে।
  3. সহজ এবং দ্রুত: REST সাধারণত সহজ ও দ্রুত, যা অন্যান্য সিস্টেমের সাথে ডেটা ইন্টিগ্রেশনে কার্যকর।

Apex REST Web Service এর উদাহরণ

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;
    }
}
  • @RestResource: urlMapping প্যারামিটার ব্যবহার করে URL নির্ধারণ করা হয়েছে, যেমন /AccountAPI/.
  • @HttpGet: GET মেথড ব্যবহার করে একটি নির্দিষ্ট Account ডেটা রিটার্ন করা হয়েছে।
  • @HttpPost: POST মেথড ব্যবহার করে নতুন Account তৈরি করা হয়েছে।

API কল উদাহরণ

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

Apex SOAP Web Services হলো একটি XML ভিত্তিক প্রোটোকল, যা সাধারণত শক্তিশালী ইন্টিগ্রেশনের জন্য ব্যবহৃত হয় এবং WSDL (Web Services Description Language) ব্যবহার করে ডেটা ট্রান্সফার করে। SOAP Web Services XML ফরম্যাটে কাজ করে এবং এটি উচ্চ সুরক্ষা ও নির্ভরযোগ্যতা নিশ্চিত করে।

Apex SOAP Web Services এর বৈশিষ্ট্য

  1. WSDL ব্যবহার: SOAP API WSDL ফাইল ব্যবহার করে ওয়েব সার্ভিসের গঠন ও কার্যপ্রবাহ নির্ধারণ করে।
  2. XML ফরম্যাটে ডেটা: SOAP Web Services XML ফরম্যাটে ডেটা এক্সচেঞ্জ করে।
  3. উচ্চ সুরক্ষা এবং নির্ভরযোগ্যতা: SOAP API সাধারণত উচ্চ সুরক্ষা ও নির্ভরযোগ্যতা নিশ্চিত করে।

Apex SOAP Web Service এর উদাহরণ

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: Apex ক্লাসের মেথডে webService কিওয়ার্ড ব্যবহার করে SOAP Service তৈরি করা হয়েছে।
  • getAccountById: একটি নির্দিষ্ট Account রেকর্ড রিটার্ন করার জন্য একটি মেথড।
  • createAccount: নতুন Account রেকর্ড তৈরি এবং রিটার্ন করার জন্য একটি মেথড।

WSDL জেনারেট করা

SOAP API ব্যবহার করতে WSDL জেনারেট করতে হবে:

  1. Salesforce UI থেকে Setup-এ যান।
  2. Apex Classes সেকশনে যান এবং Generate WSDL বাটন ক্লিক করুন।
  3. WSDL ফাইল ডাউনলোড করুন এবং ক্লায়েন্ট সিস্টেমে এটি ব্যবহার করুন।

Apex REST এবং SOAP Web Services এর মধ্যে পার্থক্য

বৈশিষ্ট্যREST Web ServicesSOAP Web Services
ডেটা ফরম্যাটJSONXML
প্রোটোকলHTTPHTTP, SMTP, TCP
অপারেশনGET, POST, PUT, DELETEনির্দিষ্ট মেথডের মাধ্যমে নির্ধারিত অপারেশন
সুরক্ষাকম সুরক্ষা (কিন্তু OAuth 2.0 এবং TLS ব্যবহারযোগ্য)সাধারণত উচ্চ সুরক্ষা এবং নির্ভরযোগ্য
ক্লায়েন্ট ব্যবহারব্রাউজার, মোবাইল অ্যাপ্লিকেশন, IoTএন্টারপ্রাইজ অ্যাপ্লিকেশন ও ডিস্ট্রিবিউটেড সিস্টেম
সহজতাসহজ এবং দ্রুতশক্তিশালী কিন্তু জটিল

Apex REST এবং SOAP Web Services ব্যবহার করার ভালো অনুশীলন

  1. গভর্নর লিমিট মেনে চলুন: বড় ডেটা ট্রান্সফার বা বেশি অপারেশন করার সময় গভর্নর লিমিট মেনে চলুন।
  2. Exception Handling নিশ্চিত করুন: Exception Handling নিশ্চিত করতে try-catch ব্লক ব্যবহার করুন।
  3. সিকিউরিটি ইমপ্লিমেন্ট করুন: Sensitive data আদান-প্রদানের সময় যথাযথ সিকিউরিটি মেজার, যেমন OAuth 2.0 এবং TLS ব্যবহার করুন।
  4. Logging এবং Monitoring: প্রতিটি API রিকোয়েস্টের জন্য Logging এবং Monitoring নিশ্চিত করুন।
  5. Test Coverage: REST এবং SOAP মেথডগুলোর জন্য টেস্ট ক্লাস লিখুন এবং ৭৫% কোড কাভারেজ নিশ্চিত করুন।

Apex REST এবং SOAP Web Services এর উদাহরণ: টেস্ট ক্লাস সহ

Apex REST Class

@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;
    }
}

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;
    }
}

Test Class

@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');
    }
}
  • testRestGetAccount: REST Web Service এর GET মেথড টেস্ট করে, যা একটি Account রেকর্ড রিটার্ন করে।
  • testSoapGetAccountById: SOAP Web Service এর getAccountById মেথড টেস্ট করে, যা একটি নির্দিষ্ট Account রেকর্ড রিটার্ন করে।

সারসংক্ষেপ

Apex REST এবং SOAP Web Services Salesforce থেকে অন্য সিস্টেমে ডেটা প্রেরণ এবং গ্রহণের জন্য ব্যবহৃত হয়। REST Web Services সাধারণত দ্রুত এবং JSON ফরম্যাটে কাজ করে, যেখানে SOAP Web Services XML ফরম্যাটে কাজ করে এবং উচ্চ সুরক্ষা প্রদান করে। প্রতিটি Web Service টেস্টিং এবং গভর্নর লিমিট মেনে চলার মাধ্যমে একটি নিরাপদ ও কার্যকর ইন্টিগ্রেশন নিশ্চিত করা যায়।

common.content_added_by

Apex REST Web Services এর ধারণা

229
229

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 এর মূল ধারণা

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 Services এর গুরুত্বপূর্ণ বৈশিষ্ট্য

  1. RESTful Architecture: এটি RESTful আর্কিটেকচারের মাধ্যমে কাজ করে, যা লাইটওয়েট এবং স্কেলেবল।
  2. বিভিন্ন HTTP মেথড সাপোর্ট: HTTP GET, POST, PUT, DELETE মেথড সাপোর্ট করে, যা ডেটা ক্রিয়েট, রিড, আপডেট এবং ডিলিট করার কাজ সম্পন্ন করতে সহায়ক।
  3. @RestResource এবং URL Mapping: @RestResource অ্যানোটেশন ব্যবহার করে নির্দিষ্ট API এন্ডপয়েন্ট মেপিং করা যায়, যা বাহ্যিক সিস্টেমকে Salesforce এর সাথে সংযোগ স্থাপন করতে সহায়তা করে।
  4. JSON এবং XML Format: API রিকোয়েস্ট এবং রেসপন্স সাধারণত JSON বা XML ফরম্যাটে হতে পারে, যা সহজে বাহ্যিক অ্যাপ্লিকেশন দ্বারা প্রসেস করা যায়।

Apex REST Web Services এর উদাহরণ

নিচে একটি সাধারণ উদাহরণ দেয়া হলো, যেখানে Apex REST Web Service তৈরি করা হয়েছে, যা Account রেকর্ডের তথ্য রিটার্ন, ক্রিয়েট, আপডেট, এবং ডিলিট করার কাজ করে।

Apex REST API ক্লাস

@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';
    }
}

বিস্তারিত:

  • @RestResource(urlMapping='/AccountService/*'): এন্ডপয়েন্ট AccountService নামে তৈরি করা হয়েছে, যা বাহ্যিক সিস্টেম থেকে এক্সেস করা যায়।
  • @HttpGet: getAccountById মেথড HTTP GET রিকোয়েস্টে Account রেকর্ড রিটার্ন করে।
  • @HttpPost: createAccount মেথড HTTP POST রিকোয়েস্টে নতুন Account রেকর্ড তৈরি করে।
  • @HttpPut: updateAccount মেথড HTTP PUT রিকোয়েস্টে Account রেকর্ড আপডেট করে।
  • @HttpDelete: deleteAccount মেথড HTTP DELETE রিকোয়েস্টে Account রেকর্ড ডিলিট করে।

Apex REST Web Services এর কিছু গুরুত্বপূর্ণ পয়েন্ট

  1. REST API Endpoint: @RestResource দিয়ে নির্দিষ্ট URL বা API Endpoint তৈরি করা হয়, যা বাহ্যিক অ্যাপ্লিকেশনকে Salesforce ডেটা বা লজিক এক্সেস করতে সহায়তা করে।
  2. JSON Request এবং Response: সাধারণত JSON ফরম্যাটে রিকোয়েস্ট ও রেসপন্স ব্যবহার করা হয়, যা অনেক অ্যাপ্লিকেশন দ্বারা সহজে প্রসেস করা যায়।
  3. Global Access Modifier: Apex REST ক্লাস এবং মেথডে global অ্যাক্সেস মডিফায়ার ব্যবহার করতে হয়, যাতে বাহ্যিক সিস্টেম এই মেথডগুলো অ্যাক্সেস করতে পারে।
  4. Error Handling: সঠিকভাবে Exception Handling করতে হবে, যাতে বাহ্যিক অ্যাপ্লিকেশন রেসপন্সের মাধ্যমে ত্রুটি বার্তা পেতে পারে।

Apex REST Web Services কেন গুরুত্বপূর্ণ?

  1. বাহ্যিক সিস্টেম ইন্টিগ্রেশন: Apex REST API ব্যবহার করে Salesforce সহজেই অন্যান্য অ্যাপ্লিকেশন বা পরিষেবার সাথে সংযুক্ত হতে পারে।
  2. কাস্টম ডেটা এক্সেস এবং ম্যানিপুলেশন: এটি কাস্টম ডেটা এক্সেস ও ম্যানিপুলেশন নিশ্চিত করে, যা শুধুমাত্র প্রয়োজনীয় ডেটা শেয়ার করতে সাহায্য করে।
  3. লাইটওয়েট এবং স্কেলেবল: REST API লাইটওয়েট এবং স্কেলেবল হওয়ায়, এটি বড় অ্যাপ্লিকেশন এবং বড় ডেটাসেট নিয়ে কাজ করা সহজ করে।
  4. JSON ফরম্যাট এবং HTTP মেথড সমর্থন: JSON ফরম্যাট এবং বিভিন্ন HTTP মেথড সাপোর্ট করে, যা ডেভেলপারদের জন্য REST API ব্যবহারে সহজ করে তোলে।

ভালো অনুশীলন

  1. সঠিক Error Handling ব্যবহার করুন: বাহ্যিক সিস্টেমকে সঠিক Error Message প্রদান করতে Exception Handling করুন।
  2. অতিরিক্ত ডেটা শেয়ার এড়িয়ে চলুন: Apex REST API-তে প্রয়োজনীয় ডেটা সীমিত করুন, যা নিরাপত্তা ও কার্যক্ষমতা উন্নত করে।
  3. Authentication ব্যবহার করুন: REST API Endpoint অ্যাক্সেসের জন্য সঠিক Authentication এবং Authorization সেট করুন।
  4. Governor Limits মেনে চলুন: Salesforce-এর গভর্নর লিমিট মেনে API ডেভেলপ করুন, যাতে গভর্নর লিমিট অতিক্রমের কারণে Transaction ব্যাহত না হয়।

সংক্ষেপে

Apex REST Web Services Salesforce-এ RESTful API তৈরি করতে ব্যবহৃত হয়, যা বাহ্যিক সিস্টেমের সাথে সহজে Salesforce ডেটা এবং লজিক শেয়ার করতে সহায়ক। Apex REST Web Services বিভিন্ন HTTP মেথড যেমন GET, POST, PUT, DELETE সাপোর্ট করে এবং JSON ফরম্যাটে ডেটা এক্সচেঞ্জ করে, যা অন্য সিস্টেমের সাথে এক্সচেঞ্জিং ডেটা সহজ করে তোলে। Salesforce ডেভেলপমেন্টে Apex REST Web Services গুরুত্বপূর্ণ ভূমিকা পালন করে এবং এক্সটার্নাল অ্যাপ্লিকেশনের সাথে দ্রুত ও কার্যকর সংযোগ স্থাপন করতে সহায়ক।

common.content_added_by

REST API Integration এবং HTTP Methods

266
266

REST API Integration হলো Salesforce-এ RESTful APIs ব্যবহার করে অন্য সিস্টেমের সাথে ডেটা আদান-প্রদানের একটি পদ্ধতি। REST API Integration এর মাধ্যমে HTTP মেথড যেমন GET, POST, PUT, এবং DELETE ব্যবহার করে ডেটা প্রক্রিয়াকরণ করা হয়। REST API Integration সাধারণত JSON ফরম্যাটে ডেটা পাঠায় এবং গ্রহণ করে, যা ব্যবহারকারী এবং সিস্টেমের মধ্যে দ্রুত ও সহজ ডেটা এক্সচেঞ্জ নিশ্চিত করে।


REST API Integration এ HTTP Methods এর ব্যবহার

HTTP মেথডের মাধ্যমে REST API-তে বিভিন্ন CRUD (Create, Read, Update, Delete) অপারেশন করা হয়:

  1. GET: ডেটা রিট্রিভ করতে ব্যবহৃত হয়।
  2. POST: নতুন ডেটা তৈরি করতে ব্যবহৃত হয়।
  3. PUT: বিদ্যমান ডেটা আপডেট করতে ব্যবহৃত হয়।
  4. DELETE: ডেটা মুছে ফেলতে ব্যবহৃত হয়।

HTTP GET Method: ডেটা রিট্রিভ করা

GET মেথড ব্যবহার করে নির্দিষ্ট ডেটা রিট্রিভ করা হয়। এটি সাধারণত URL এর মাধ্যমে ডেটা পাঠায় এবং রেসপন্সে JSON ফরম্যাটে ডেটা রিটার্ন করে।

উদাহরণ: GET Method ব্যবহার করে ডেটা রিট্রিভ

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());
        }
    }
}
  • setMethod('GET'): HTTP GET মেথড নির্ধারণ করা হয়েছে।
  • setEndpoint: API URL দিয়ে নির্দিষ্ট Account রেকর্ড রিট্রিভ করা হয়েছে।
  • Authorization Header: API কল করার জন্য Authorization Header সেট করা হয়েছে।

HTTP POST Method: নতুন ডেটা তৈরি করা

POST মেথড ব্যবহার করে নতুন ডেটা তৈরি করা হয়। এটি সাধারণত JSON বা XML ফরম্যাটে ডেটা রিকোয়েস্ট বডিতে প্রেরণ করে।

উদাহরণ: POST Method ব্যবহার করে নতুন ডেটা তৈরি

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());
        }
    }
}
  • setMethod('POST'): HTTP POST মেথড নির্ধারণ করা হয়েছে।
  • setBody: JSON ফরম্যাটে Account ডেটা পাঠানো হয়েছে।
  • Content-Type Header: application/json কনটেন্ট টাইপ সেট করা হয়েছে।

HTTP PUT Method: ডেটা আপডেট করা

PUT মেথড ব্যবহার করে বিদ্যমান ডেটা আপডেট করা হয়। এটি সাধারণত JSON ফরম্যাটে ডেটা পাঠায় এবং সার্ভারে ডেটা আপডেট করে।

উদাহরণ: PUT Method ব্যবহার করে ডেটা আপডেট

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());
        }
    }
}
  • setMethod('PUT'): HTTP PUT মেথড নির্ধারণ করা হয়েছে।
  • setBody: JSON ফরম্যাটে আপডেট ডেটা পাঠানো হয়েছে।

HTTP DELETE Method: ডেটা মুছে ফেলা

DELETE মেথড ব্যবহার করে নির্দিষ্ট ডেটা রেকর্ড মুছে ফেলা হয়। এটি URL এর মাধ্যমে রেকর্ডের আইডি ব্যবহার করে অপারেশন সম্পন্ন করে।

উদাহরণ: DELETE Method ব্যবহার করে ডেটা মুছে ফেলা

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());
        }
    }
}
  • setMethod('DELETE'): HTTP DELETE মেথড নির্ধারণ করা হয়েছে।
  • HTTP Status Code 204: সফল হলে স্ট্যাটাস কোড 204 রিটার্ন হয়, যা নির্দেশ করে রিসোর্স সফলভাবে মুছে ফেলা হয়েছে।

REST API Integration এর ভালো অনুশীলন

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 মেথডের জন্য টেস্ট ক্লাস লিখে ৭৫% কোড কাভারেজ নিশ্চিত করুন।


REST API Integration এর উদাহরণ: টেস্ট ক্লাস সহ

Apex Class with REST API Methods

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());
        }
    }
}

Test Class

@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;
        }
    }
}
  • Mock Class: MockHttpResponseGenerator ব্যবহার করে টেস্ট মেথডে HTTP Callout মক করা হয়েছে।
  • System.assertNotEquals: রেসপন্সে প্রাপ্ত Account ID যাচাই করা হয়েছে।

সারসংক্ষেপ

REST API Integration Salesforce-এ HTTP Methods ব্যবহার করে ডেটা প্রক্রিয়াকরণের একটি কার্যকর পদ্ধতি। Apex-এর মাধ্যমে GET, POST, PUT, এবং DELETE মেথড ব্যবহার করে API কল করে ডেটা এক্সচেঞ্জ করা যায়। Exception Handling, Proper Authentication, এবং Test Coverage নিশ্চিত করার মাধ্যমে একটি নিরাপদ এবং নির্ভরযোগ্য API Integration নিশ্চিত করা যায়।

common.content_added_by

SOAP Web Services এবং WSDL এর ব্যবহার

242
242

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

SOAP Web Services Salesforce এ একটি স্ট্যান্ডার্ড প্রোটোকল, যা নির্দিষ্ট কার্যক্রম এবং ডেটা ট্রান্সফার করতে XML ফরম্যাট ব্যবহার করে। SOAP Web Services নির্ভরযোগ্য এবং নিরাপদ ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয় এবং WSDL ব্যবহার করে API-এর ফাংশন ডিফাইন করা হয়।

SOAP Web Services এর বৈশিষ্ট্য

  1. XML ভিত্তিক প্রোটোকল: SOAP Web Services XML ফরম্যাটে ডেটা ট্রান্সফার করে, যা অনেক প্রোটোকল ও প্ল্যাটফর্ম দ্বারা সমর্থিত।
  2. স্ট্রং টাইপড এবং স্ট্রিকচারড: SOAP Web Services এ স্ট্রিকচারড এবং টাইপড ডেটা এক্সচেঞ্জ করা যায়, যা ডেটা ইন্টিগ্রিটি নিশ্চিত করে।
  3. নিরাপত্তা: SOAP Web Services নিরাপদ ট্রান্সফার পদ্ধতি সমর্থন করে, যেমন WS-Security, যা প্রয়োজনীয়তার ভিত্তিতে নির্দিষ্ট নিরাপত্তা প্রদান করে।
  4. স্ট্যান্ডার্ড মেসেজ ফরম্যাট: SOAP Web Services একটি নির্দিষ্ট মেসেজ ফরম্যাট ব্যবহার করে, যা সার্ভিস এবং ক্লায়েন্টের মধ্যে এক্সচেঞ্জ হওয়া ডেটা সম্পর্কে নির্দিষ্ট কাঠামো প্রদান করে।

SOAP Web Services এর গঠন

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 (Web Services Description Language)

WSDL হলো একটি XML ভিত্তিক ভাষা, যা SOAP Web Services এর কার্যকলাপ এবং এন্ডপয়েন্ট সম্পর্কে বিস্তারিত তথ্য প্রদান করে। WSDL ফাইল ব্যবহার করে SOAP Web Services-এর অপারেশন, প্যারামিটার, এবং রিটার্ন টাইপ সম্পর্কে তথ্য জানা যায়, যা অন্যান্য অ্যাপ্লিকেশন এই সার্ভিস ব্যবহার করার জন্য প্রয়োজন।

WSDL এর গঠন

  1. Types: SOAP Web Services-এ ব্যবহৃত ডেটার ধরন (Data Types) ডিফাইন করা হয়।
  2. Message: মেসেজ গঠন করা হয়, যা SOAP মেসেজের ইনপুট এবং আউটপুট হিসেবে ব্যবহৃত হয়।
  3. PortType: বিভিন্ন অপারেশন ডিফাইন করা হয় এবং এটি SOAP Web Services-এর কার্যক্রমকে উপস্থাপন করে।
  4. Binding: SOAP মেসেজের এন্ডপয়েন্ট এবং ট্রান্সপোর্ট প্রোটোকল সংজ্ঞায়িত করা হয়।
  5. Service: SOAP Web Services-এর এন্ডপয়েন্ট URL প্রদান করা হয়, যা বাহ্যিক সিস্টেম SOAP API কল করার জন্য ব্যবহার করতে পারে।

WSDL ফাইলের উদাহরণ

<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>
  • message: getAccountRequest এবং getAccountResponse SOAP মেসেজ হিসেবে ব্যবহার হবে।
  • portType: AccountServicePortType অপারেশন ডিফাইন করে।
  • binding: SOAP মেসেজের binding ডিফাইন করে।
  • service: Service URL, যেখানে SOAP API কল করতে হবে।

Salesforce-এ SOAP Web Services এবং WSDL ব্যবহার

Salesforce-এ SOAP Web Services তৈরি এবং ব্যবহার করতে Apex Web Service এবং WSDL ফাইল ব্যবহার করা হয়। Salesforce-এর WSDL ফাইল জেনারেট করে তা বাহ্যিক সিস্টেমে ইমপোর্ট করা হয়, যাতে বাহ্যিক সিস্টেম SOAP কল করতে পারে।

Apex Web Service উদাহরণ

নিচে একটি সাধারণ 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];
    }
}

WSDL জেনারেট করা

  • WSDL Generation: Salesforce থেকে SOAP API-এর জন্য WSDL ফাইল জেনারেট করতে Apex ক্লাসে webService মেথড সংজ্ঞায়িত করা হয়।
  • WSDL Import in External System: বাহ্যিক সিস্টেমে WSDL ইমপোর্ট করে, সেখানে SOAP মেথড কল করা সম্ভব হয়।

SOAP Web Services এবং WSDL এর সুবিধা

  1. নির্ভরযোগ্য এবং সিকিউর: SOAP Web Services সিকিউর এবং নির্ভরযোগ্য, যা বড় এন্টারপ্রাইজ সিস্টেমে ব্যাপক ব্যবহৃত হয়।
  2. স্ট্রংলি টাইপড ডেটা ট্রান্সফার: SOAP এ স্ট্রং টাইপড এবং নির্দিষ্ট স্ট্রাকচার মেইনটেইন করে, যা ডেটার ইন্টিগ্রিটি বজায় রাখে।
  3. WSDL ফাইলের মাধ্যমে অটোমেশন: WSDL ফাইলের মাধ্যমে SOAP Web Services এর সকল কার্যক্রম ও স্ট্রাকচার জানা যায়, যা সহজে ইনটিগ্রেশন ও অটোমেশন নিশ্চিত করে।

ভালো অনুশীলন

  1. Error Handling: SOAP Web Services ব্যবহার করার সময় যথাযথ Error Handling করুন, যাতে ত্রুটি হলে সঠিক মেসেজ রিটার্ন করা যায়।
  2. WSDL Security: WSDL-এ সেনসিটিভ ডেটা শেয়ার করা থেকে বিরত থাকুন এবং প্রয়োজন হলে WS-Security ব্যবহার করুন।
  3. SOAP মেথডগুলো Optimized রাখুন: বড় ডেটাসেট নিয়ে কাজ করার সময় কোড অপ্টিমাইজ করুন এবং গভর্নর লিমিট মেনে চলুন।

সারসংক্ষেপ

SOAP Web Services এবং WSDL Salesforce এবং অন্যান্য সিস্টেমের মধ্যে নির্ভরযোগ্য এবং সিকিউর ডেটা ট্রান্সফার নিশ্চিত করে। SOAP Web Services XML ভিত্তিক স্ট্রাকচার ব্যবহার করে ডেটা আদান-প্রদান করে এবং WSDL ফাইল ব্যবহার করে এর স্ট্রাকচার ও এন্ডপয়েন্ট সম্পর্কে তথ্য প্রদান করে। Salesforce ডেভেলপমেন্টে SOAP Web Services এবং WSDL-এর ব্যবহার বড় এন্টারপ্রাইজ সিস্টেমে কার্যকর ও নিরাপদ ডেটা শেয়ারিং নিশ্চিত করে।

common.content_added_by

External API Callouts এবং Web Service Integration

235
235

External API Callouts এবং Web Service Integration হলো Salesforce-এ ব্যবহারকারীর অ্যাপ্লিকেশনকে বাইরের সিস্টেমের সাথে সংযুক্ত করার একটি প্রক্রিয়া। এই Integration এর মাধ্যমে Salesforce অন্যান্য অ্যাপ্লিকেশন থেকে ডেটা গ্রহণ এবং প্রেরণ করতে পারে, যেমন পেমেন্ট গেটওয়ে, থার্ড-পার্টি ডেটাবেস, বা অন্য কোনো API থেকে ডেটা রিকোয়েস্ট করা।


External API Callouts

External API Callouts হল Salesforce-এর মাধ্যমে বাইরের কোনো সিস্টেমের API-তে রিকোয়েস্ট পাঠানো এবং রেসপন্স গ্রহণ করার একটি প্রক্রিয়া। সাধারণত HTTP (REST) এবং SOAP (XML) API Callouts এর মাধ্যমে বাইরের সিস্টেমের সাথে যোগাযোগ করা হয়।

API Callouts এর ধাপসমূহ

  1. HttpRequest তৈরি করুন: HTTP মেথড, হেডার এবং বডি সহ একটি HttpRequest অবজেক্ট তৈরি করুন।
  2. HTTP পাঠান: Http অবজেক্টের send() মেথড ব্যবহার করে HttpRequest পাঠান।
  3. HttpResponse গ্রহণ করুন: HttpResponse অবজেক্টের মাধ্যমে API এর রেসপন্স সংরক্ষণ করুন এবং প্রসেস করুন।
  4. Exception Handling: Callout-এর সময় কোনো ত্রুটি হলে Exception Handling নিশ্চিত করুন।

REST API Callout উদাহরণ

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 Request: এই মেথডটি একটি GET রিকোয়েস্ট করে এবং JSON বা XML ফরম্যাটে রেসপন্স গ্রহণ করে।
  • Authorization Header: API অ্যাক্সেসের জন্য Authorization Header ব্যবহার করা হয়েছে।
  • Exception Handling: Callout Exception Handling নিশ্চিত করা হয়েছে।

Web Service Integration

Salesforce অন্যান্য অ্যাপ্লিকেশন বা সিস্টেমের সাথে SOAP এবং REST Web Services এর মাধ্যমে ইন্টিগ্রেশন করতে পারে। SOAP Web Services XML ফরম্যাটে ডেটা প্রক্রিয়াকরণ করে এবং WSDL (Web Services Description Language) ব্যবহার করে ডেটা গঠন নির্ধারণ করে। REST Web Services JSON ফরম্যাটে ডেটা প্রক্রিয়াকরণ করে এবং HTTP প্রোটোকল ব্যবহার করে।

SOAP Web Service Integration

  1. WSDL Import করুন: SOAP Web Service Integration এর জন্য প্রথমে WSDL ফাইল আমদানি করতে হবে।
  2. Apex ক্লাস জেনারেট করুন: WSDL আমদানি করলে Salesforce স্বয়ংক্রিয়ভাবে Apex ক্লাস তৈরি করে।
  3. SOAP কল করুন: জেনারেট করা ক্লাসের মেথড ব্যবহার করে SOAP কল করতে হবে।

SOAP Web Service উদাহরণ

// WSDL আমদানি করলে তৈরি হওয়া Apex ক্লাসের উদাহরণ
public class SampleSOAPWebService {
    public String exampleMethod(String param) {
        // SOAP Request and Response
    }
}

API Callout এবং Web Service Integration এর ভালো অনুশীলন

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 ব্যবহার করে নিরাপদ অ্যাক্সেস নিশ্চিত করুন।


API Callout এবং Web Service Integration এর সেরা পদ্ধতি

ধাপREST API IntegrationSOAP Web Service Integration
Data FormatJSONXML
HTTP MethodsGET, POST, PUT, DELETESOAP নির্দিষ্ট মেথড
AuthenticationBearer Token, OAuth 2.0WSDL অনুযায়ী নির্ধারিত
TestingHttpCalloutMock এবং Test.setMock() ব্যবহারSOAP UI বা Web Service Mock
Error HandlingException Handling এবং LoggingSOAP Fault এবং Exception Handling

সারসংক্ষেপ

External API Callouts এবং Web Service Integration Salesforce থেকে বাইরের সিস্টেমে ডেটা পাঠানো এবং গ্রহণের একটি গুরুত্বপূর্ণ পদ্ধতি। API Callout এর মাধ্যমে REST এবং SOAP উভয় ধরনের Web Services এর সাথে ইন্টিগ্রেশন সম্ভব। সঠিক Exception Handling, Authentication, এবং Testing পদ্ধতি ব্যবহার করে একটি কার্যকর এবং নিরাপদ ইন্টিগ্রেশন নিশ্চিত করা যায়।

common.content_added_and_updated_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion