PL/SQL দিয়ে Web API Integration করার মাধ্যমে আপনি বাহ্যিক সিস্টেমের সাথে যোগাযোগ করতে পারেন, যেমন REST API বা SOAP API। এই পদ্ধতি ব্যবহৃত হয় যখন আপনার PL/SQL কোড থেকে কোনো এক্সটার্নাল সেবা (যেমন, ওয়েব সার্ভিস) কল করতে হয়। Oracle Database এ Web API Integration সাধারাণভাবে UTL_HTTP বা APEX_WEB_SERVICE প্যাকেজের মাধ্যমে সম্পন্ন করা হয়।
এখানে, আমরা UTL_HTTP প্যাকেজ ব্যবহার করে একটি REST API কল করার উদাহরণ দেখব।
PL/SQL এর মাধ্যমে Web API Integration (REST API)
ধরা যাক, আমাদের একটি REST API রয়েছে যা একটি নির্দিষ্ট ইউআরএল থেকে JSON ডেটা ফেরত দেয়। আমরা এই API থেকে তথ্য গ্রহণ করতে চাই।
Step 1: UTL_HTTP প্যাকেজের মাধ্যমে Web API কল করা
PL/SQL তে UTL_HTTP প্যাকেজ ব্যবহার করে আপনি HTTP অনুরোধ পাঠাতে পারেন এবং তার উত্তর গ্রহণ করতে পারেন।
DECLARE
-- Variable to hold the response from API
l_response VARCHAR2(32767);
-- API endpoint URL
l_url VARCHAR2(200) := 'https://api.example.com/data';
-- HTTP Request method
l_http_req UTL_HTTP.REQUEST;
BEGIN
-- Open the HTTP request to the URL
l_http_req := UTL_HTTP.BEGIN_REQUEST(l_url);
-- Send the HTTP request and get the response
UTL_HTTP.SET_HEADER(l_http_req, 'User-Agent', 'PLSQL API Client');
-- Receive the response body
UTL_HTTP.GET_RESPONSE(l_http_req, l_response);
-- Print out the response for demonstration
DBMS_OUTPUT.PUT_LINE('API Response: ' || l_response);
-- End the HTTP request
UTL_HTTP.END_REQUEST(l_http_req);
EXCEPTION
WHEN UTL_HTTP.REQUEST_FAILED THEN
DBMS_OUTPUT.PUT_LINE('Error: Failed to call API');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Unexpected error: ' || SQLERRM);
END;
Explanation:
l_url: এটি সেই URL যা আপনি কল করতে চান (এখানে একটি উদাহরণ URL দেওয়া হয়েছে, তবে এটি আপনার API এর ইউআরএল হতে হবে)।- UTL_HTTP.BEGIN_REQUEST: এটি HTTP অনুরোধ শুরু করে।
- UTL_HTTP.SET_HEADER: এটি HTTP হেডারে ইউজার এজেন্ট সেট করে।
- UTL_HTTP.GET_RESPONSE: এটি HTTP অনুরোধ পাঠায় এবং তার মাধ্যমে API থেকে আসা রেসপন্স সংগ্রহ করে।
- DBMS_OUTPUT.PUT_LINE: এটি রেসপন্স প্রিন্ট করে (এটা শুধু ডিবাগging এর জন্য, বাস্তবিক প্রয়োজনে ডেটা অন্যত্র স্টোর করা যেতে পারে)।
- UTL_HTTP.END_REQUEST: এটি HTTP অনুরোধ সম্পন্ন করে।
Step 2: JSON Parsing (Optional)
যেহেতু অনেক Web API JSON রেসপন্স প্রদান করে, আপনি যদি JSON রেসপন্স নিতে চান, তাহলে আপনাকে JSON_OBJECT_T এবং JSON_ARRAY_T টাইপ ব্যবহার করে JSON পার্সিং করতে হবে।
DECLARE
l_response VARCHAR2(32767);
l_json_response JSON_OBJECT_T;
BEGIN
-- Call the API as shown before and receive the response in 'l_response'
-- Parsing the JSON response
l_json_response := JSON_OBJECT_T.parse(l_response);
-- Accessing a specific field from the JSON response (example: "name")
DBMS_OUTPUT.PUT_LINE('Name: ' || l_json_response.get_string('name'));
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);
END;
Explanation:
JSON_OBJECT_T.parse(l_response): এটি JSON স্ট্রিংকে একটি JSON অবজেক্টে রূপান্তরিত করে।get_string('name'): এটি JSON অবজেক্টের একটি ফিল্ড (যেমন 'name') এর মান গ্রহণ করে।
Step 3: Authentication (API Key or OAuth)
বহু ওয়েব API একটি নির্দিষ্ট ধরনের authentication চায়, যেমন API Key বা OAuth। সাধারণত, এটি HTTP হেডারের মাধ্যমে পাঠানো হয়।
উদাহরণস্বরূপ, যদি আপনাকে API Key ব্যবহার করে API কল করতে হয়:
DECLARE
l_response VARCHAR2(32767);
l_url VARCHAR2(200) := 'https://api.example.com/data';
l_api_key VARCHAR2(50) := 'your_api_key_here';
l_http_req UTL_HTTP.REQUEST;
BEGIN
-- Open the HTTP request to the URL
l_http_req := UTL_HTTP.BEGIN_REQUEST(l_url);
-- Set the API Key in the HTTP header
UTL_HTTP.SET_HEADER(l_http_req, 'Authorization', 'Bearer ' || l_api_key);
-- Receive the response body
UTL_HTTP.GET_RESPONSE(l_http_req, l_response);
-- Print out the response for demonstration
DBMS_OUTPUT.PUT_LINE('API Response: ' || l_response);
-- End the HTTP request
UTL_HTTP.END_REQUEST(l_http_req);
EXCEPTION
WHEN UTL_HTTP.REQUEST_FAILED THEN
DBMS_OUTPUT.PUT_LINE('Error: Failed to call API');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Unexpected error: ' || SQLERRM);
END;
Explanation:
- এখানে
Authorizationহেডার ব্যবহার করেBearerটোকেন পাঠানো হচ্ছে, যা অনেক API authentication এর জন্য ব্যবহৃত হয়।
Step 4: Error Handling
API থেকে যখন রেসপন্স পাওয়া যায়, তখন অনেক সময় HTTP স্ট্যাটাস কোডের মাধ্যমে ত্রুটি জানানো হয় (যেমন, 400 বা 500 সিরিজ কোড)। আপনি এসব কোড চেক করে সঠিক ত্রুটি ব্যবস্থা গ্রহণ করতে পারেন।
DECLARE
l_response VARCHAR2(32767);
l_status_code NUMBER;
BEGIN
-- Call API and get status code
l_status_code := UTL_HTTP.REQUEST(l_url);
-- Check status code
IF l_status_code != 200 THEN
DBMS_OUTPUT.PUT_LINE('Error: Received non-OK response ' || l_status_code);
ELSE
-- Handle valid response
UTL_HTTP.GET_RESPONSE(l_http_req, l_response);
DBMS_OUTPUT.PUT_LINE('API Response: ' || l_response);
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Unexpected error: ' || SQLERRM);
END;
Conclusion
PL/SQL এর মাধ্যমে Web API Integration এর সাহায্যে আপনি সহজেই বাহ্যিক সিস্টেমের সাথে যোগাযোগ করতে পারেন এবং ডেটা প্রাপ্তি ও প্রক্রিয়াকরণ করতে পারেন। উদাহরণস্বরূপ, UTL_HTTP প্যাকেজ ব্যবহার করে REST API কল করা এবং JSON ডেটা পার্সিং, এ ধরনের ইন্টিগ্রেশন টেকনিক গুলি খুবই কার্যকরী। API Authentication, Error Handling এবং JSON Parsing গুরুত্বপূর্ণ পদ্ধতিগুলি, যা আপনাকে API কল করার সময় সঠিকভাবে ত্রুটির মোকাবিলা করতে সাহায্য করবে।
Read more