কম্পিউটার

পাইথন অনুরোধ:একটি গাইড

আপনি যখন পাইথনে একটি অ্যাপ্লিকেশন তৈরি করছেন, তখন এমন একটি সময় আসতে পারে যখন আপনি একটি তৃতীয় পক্ষের পরিষেবার সাথে সংযোগ করতে চান। উদাহরণস্বরূপ, যদি আপনি একটি ফিটনেস টুল তৈরি করেন তবে আপনি Fitbit API-এর সাথে সংযোগ করতে চাইতে পারেন যাতে আপনি আপনার অনুশীলনের ডেটা দেখতে পারেন; টেক্সট বার্তা পাঠাতে পারে এমন একটি অ্যাপ Twilio API-এর সাথে সংযুক্ত হতে পারে।

পাইথনে, অনুরোধ লাইব্রেরি আপনাকে অনুরোধ করার অনুমতি দেয় যাতে আপনি তৃতীয় পক্ষের ওয়েব পরিষেবাগুলি আপনার অ্যাপ্লিকেশনগুলির সাথে সংযুক্ত করতে পারেন। এই নির্দেশিকায়, আমরা পাইথন অনুরোধের লাইব্রেরি এবং কিভাবে আপনি HTTP অনুরোধ পাঠাতে এটি ব্যবহার করতে পারেন সে সম্পর্কে শিখতে যাচ্ছি।

ওয়েব অনুরোধ:একটি রিফ্রেশার

অনুরোধ ইন্টারনেট কেন্দ্রে আছে. আপনি যখন এই নিবন্ধটিতে ক্লিক করেছেন, তখন একটি HTTP অনুরোধ ক্যারিয়ার কর্ম সার্ভারে পাঠানো হয়েছিল। সেই অনুরোধটি আমাদের সার্ভারকে বলেছিল যে আপনি কোন ওয়েব পৃষ্ঠাটি দেখতে চান যাতে আমাদের সার্ভার পৃষ্ঠাটি খুঁজে পেতে পারে৷ একবার ওয়েব পৃষ্ঠাটি পাওয়া গেলে, আমাদের ওয়েব সার্ভার এটি আপনার ব্রাউজারে ফিরিয়ে দেয়। এই প্রক্রিয়াটি আপনাকে এই টিউটোরিয়ালটি দেখতে দেয়।

ওয়েব অনুরোধগুলি বিভিন্ন আকারে আসে। এই ওয়েব পৃষ্ঠাটি দেখার জন্য আপনি যে ধরনের অনুরোধ করেছেন তাকে GET অনুরোধ বলা হয়। এই ধরনের অনুরোধ আপনাকে ডেটা পুনরুদ্ধার করতে দেয়। POST এবং PUT এর মতো অন্যান্য ধরণের অনুরোধ রয়েছে, যেগুলি সার্ভারে সংস্থানগুলি পরিবর্তন করতে ব্যবহৃত হয়। এই টিউটোরিয়ালের উদ্দেশ্যে, আমরা GET এবং POST অনুরোধের উপর ফোকাস করতে যাচ্ছি।

কিভাবে অনুরোধগুলি ইনস্টল করবেন

অনুরোধ হল পাইথনের HTTP লাইব্রেরি যা আপনাকে ওয়েব অনুরোধ করতে দেয়।

আমরা পাইথন ব্যবহার করে ওয়েব অনুরোধ করার আগে, আমাদের পাইথন অনুরোধ কোড লাইব্রেরি ইনস্টল করতে হবে। আমরা নিম্নলিখিত কমান্ড ব্যবহার করে তা করতে পারি:

pip install requests

এখন যেহেতু আমরা পাইথন প্যাকেজটি ডাউনলোড করেছি, আমরা একটি ওয়েব অনুরোধ করতে প্রস্তুত৷

কিভাবে একটি GET অনুরোধ করতে হয়

আপনি যে ওয়েব রিকোয়েস্টটি করবেন সেটি হল একটি GET রিকোয়েস্ট। এই ধরনের অনুরোধ আপনাকে সার্ভার থেকে ডেটা পুনরুদ্ধার করতে দেয়।

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।

ধরা যাক আমরা এমন একটি অ্যাপ তৈরি করছি যা আপনাকে বিড়ালের তথ্যের একটি তালিকা পুনরুদ্ধার করতে দেয়। এটি করার জন্য, আমরা cat-facts নামে একটি API ব্যবহার করতে যাচ্ছি। এই API জনসাধারণের জন্য উন্মুক্ত, তাই সাইন ইন করার জন্য আমাদের কোনো শংসাপত্রের প্রয়োজন নেই। আমরা API-কে অনুরোধ করতে এই কোডটি ব্যবহার করতে পারি:

import requests

res = requests.get('https://cat-fact.herokuapp.com/facts')

print(res.status_code)

এই কোডটি ফিরে এসেছে:200। আসুন আমাদের কোডটি ভেঙে ফেলি।

প্রথম লাইনে, আমরা অনুরোধ লাইব্রেরি আমদানি করেছি। এটি আমাদের অনুরোধ লাইব্রেরি অ্যাক্সেস করার অনুমতি দেয় যা আমরা আমাদের টিউটোরিয়ালে ব্যবহার করব। তারপর আমরা requests.get() ব্যবহার করেছি একটি ওয়েব অনুরোধ করার পদ্ধতি। আমরা .put() এর মত পদ্ধতি ব্যবহার করতে পারতাম অথবা .post() অন্যান্য ধরনের অনুরোধ করতে, কিন্তু এই ক্ষেত্রে আমাদের শুধুমাত্র cat-facts API থেকে ডেটা পুনরুদ্ধার করতে হবে।

এরপরে, আমরা আমাদের ওয়েব অনুরোধ থেকে স্ট্যাটাস কোড প্রিন্ট আউট করেছি। 200 নম্বরটি ফেরত দেওয়া হয়েছিল, যা আমাদের বলেছিল যে আমাদের ওয়েব অনুরোধ সফলভাবে করা হয়েছে৷ এই সংখ্যাগুলোর অর্থ কী তা আমরা পরে টিউটোরিয়ালে আলোচনা করব।

একটি অনুরোধ দেখা

উপরের উদাহরণে, আমরা আমাদের অনুরোধের স্ট্যাটাস কোড প্রিন্ট করেছি। কিন্তু কিভাবে আমরা পুনরুদ্ধার করা তথ্য দেখতে পারি? বিড়াল ঘটনা কোথায়? সেখানেই .text এবং .json() পদ্ধতি আসে।

পাঠ্য প্রতিক্রিয়া দেখুন

আমরা আমাদের ওয়েব অনুরোধের ফলাফল দেখতে .text পদ্ধতি ব্যবহার করতে পারি:

import requests

res = requests.get('https://cat-fact.herokuapp.com/facts')

print(res.text)

এই কোড বিড়াল তথ্য একটি তালিকা ফিরে. তবে, এটি আমাদের জন্য খুব বেশি ব্যবহারিক নয় কারণ আমরা যে ডেটা অনুসন্ধান করছি তা একটি API। যদিও আমাদের কাছে এখন বিড়ালের তথ্যগুলির একটি পাইথন তালিকা রয়েছে, আমাদের জন্য সেগুলি পড়া কঠিন কারণ সেগুলি সরল পাঠ্যে রয়েছে৷

JSON প্রতিক্রিয়া দেখুন

আরও দরকারী ফর্ম্যাট যেখানে আমাদের বিড়ালের তথ্য সংরক্ষণ করা যেতে পারে তা হল JSON। আমরা এই কোড ব্যবহার করে আমাদের অনুরোধ থেকে JSON ডেটা পুনরুদ্ধার করতে পারি:

print(res.json())

আমাদের কোড বিড়ালের তথ্যের একটি দীর্ঘ তালিকা প্রদান করে। এখানে তালিকার প্রথম রেকর্ড রয়েছে:

{'_id': '58e009550aac31001185ed12', 'text': 'The oldest cat video on YouTube dates back to 1894.', 'type': 'cat', 'user': {'_id': '58e007480aac31001185ecef', 'name': {'first': 'Kasimir', 'last': 'Schulz'}}, 'upvotes': 6, 'userUpvoted': None}

সফলতার ! আমরা আমাদের বিড়ালের তথ্যের তালিকা পুনরুদ্ধার করতে পেরেছি।

কিভাবে একটি পোস্টের অনুরোধ করতে হয়

আপনি একটি POST অনুরোধ করতে অনুরোধ লাইব্রেরি ব্যবহার করতে পারেন। এটি আপনাকে একটি ওয়েব সার্ভারে সংরক্ষিত ডেটা পরিবর্তন করার অনুমতি দেবে।

এই উদাহরণের জন্য, আমরা Airtable API ব্যবহার করতে যাচ্ছি। কারণ আমাদের এমন একটি API ব্যবহার করতে হবে যা POST অনুরোধ সমর্থন করে এবং cat-facts API শুধুমাত্র পঠিত হয়।

ধরুন আমাদের একটি ডাটাবেস আছে যেখানে আমরা সমস্ত চা পান করি তা রেকর্ড করি। আমরা শুধু আরেক কাপ চা পান করেছি এবং আমরা এটি ডাটাবেসে যোগ করতে চাই। আমরা এই কোডটি ব্যবহার করে তা করতে পারি:

import requests

headers = {
'Authorization': 'Bearer API_KEY',
'Content-Type': 'application/json',
}

data = '{"records": [{"fields": {"Drink": "Black Decaf Tea"}}]}'

res = requests.post('https://cat-fact.herokuapp.com/facts', headers=headers, data=data)

print(res.json())

আমাদের কোড ফিরে এসেছে:

{'records': [{'id': 'recqUEPuXEAXaNl1L', 'fields': {'Drink': 'Black Decaf Tea', 'Date': '2020-06-16T08:53:02.000Z'}, 'createdTime': '2020-06-16T08:53:02.000Z'}]}

এটি আমাদের বলে যে আমাদের HTTP অনুরোধ সফল হয়েছে৷ আমরা তাদের API ব্যবহার করে আমাদের Airtable ডাটাবেসে একটি রেকর্ড যোগ করেছি। আসুন কোডের এই লাইনগুলি আরও আলোচনা করি।

প্রথমত, আমরা অনুরোধ লাইব্রেরি আমদানি করেছি যাতে আমরা আমাদের কোডে HTTP অনুরোধ করতে পারি।

তারপরে আমরা একটি অভিধান সংজ্ঞায়িত করেছি যাতে দুটি কী এবং মান রয়েছে:একটি যা আমাদের প্রমাণীকরণ কী সংরক্ষণ করে এবং আরেকটি যা ওয়েব সার্ভারে আমরা যে ধরনের সামগ্রী পাঠাচ্ছি তা নির্দিষ্ট করে। এগুলি হল হেডার যা আমাদের Airtable API-এ একটি অনুরোধ করতে পাঠাতে হবে৷

এর পরে, আমরা ডেটা নামক একটি ভেরিয়েবল ঘোষণা করেছি যা আমাদের POST অনুরোধের সাথে যে ডেটা পাঠাতে চেয়েছিল তা সংরক্ষণ করে। এই ক্ষেত্রে, আমরা আমাদের ডাটাবেসে "ব্ল্যাক ডেকাফ টি" নামে একটি পানীয় যোগ করছিলাম। আমরা তারপর requests.post() ব্যবহার করেছি পদ্ধতি এবং প্যারামিটার হিসাবে আমাদের শিরোনাম এবং ডেটা নির্দিষ্ট করেছে, যা আমাদের Airtable API-তে একটি POST অনুরোধ করতে অনুমতি দিয়েছে।

অবশেষে, আমরা res.json() ব্যবহার করে JSON ফর্ম্যাটে আমাদের অনুরোধের ফলাফল প্রিন্ট আউট করেছি .

HTTP স্ট্যাটাস কোড

আপনি যখন একটি ওয়েব অনুরোধ করেন তখন HTTP প্রোটোকল একটি অনন্য স্থিতি কোড প্রদান করে। এটি আপনাকে আপনার ওয়েব অনুরোধ সফল হয়েছে কিনা বা কোনো ত্রুটি ঘটেছে কিনা তা দেখতে দেয়। আপনি সম্ভবত এর মধ্যে কয়েকটি ইতিমধ্যেই দেখেছেন, যেমন 404।

পাইথন অনুরোধের সাথে অনুরোধ করার সময় আপনি যে স্ট্যাটাস কোডগুলির সম্মুখীন হতে পারেন তার একটি রেফারেন্স তালিকা এখানে রয়েছে:

  • 1XX:তথ্য
  • 2XX:অনুরোধ সফলভাবে করা হয়েছে
  • 3XX:অনুরোধ পুনঃনির্দেশিত হয়েছে
  • 4XX:ক্লায়েন্ট-সাইড ত্রুটি
  • 5XX:সার্ভার-সাইড ত্রুটি

এই স্ট্যাটাস কোডগুলি জানা আমাদের প্রোগ্রামে ডিবাগিং যোগ করার অনুমতি দেয়। আগে থেকে cat-facts API উদাহরণ থেকে GET অনুরোধ নেওয়া যাক। ধরুন আমরা একটি বার্তা প্রিন্ট করতে চাই যদি আমরা যে সংস্থানটি অ্যাক্সেস করছি তা খুঁজে না পাওয়া যায়। আমরা এই কোডটি ব্যবহার করে তা করতে পারি:

import requests

res = requests.get('https://cat-fact.herokuapp.com/facts')

if res.status_code == 200:
	print("Success")
else :
	print("Error")
প্রাক>

আমাদের কোড ফিরে এসেছে:সাফল্য। আমাদের অনুরোধের স্ট্যাটাস কোড 200 হওয়ায় কনসোলে "সফল" বার্তাটি প্রিন্ট করা হয়েছে। যাইহোক, যদি আমাদের অনুরোধ ব্যর্থ হয় - উদাহরণস্বরূপ, আমরা একটি অবৈধ URL উল্লেখ করে থাকি - তাহলে "ত্রুটি" বার্তাটি কনসোলে প্রিন্ট করা হত৷

উপসংহার

পাইথন অনুরোধ লাইব্রেরি আপনাকে পাইথনে HTTP অনুরোধ করতে দেয়। এই গাইডে, আমরা আলোচনা করেছি কিভাবে পাইথন রিকোয়েস্ট লাইব্রেরি GET এবং POST রিকোয়েস্ট করতে ব্যবহার করা হয়, কিন্তু আপনি লাইব্রেরি ব্যবহার করে PUT এবং DELETE রিকোয়েস্টও করতে পারেন।

যখন আপনি requests.get() এর মতো একটি পদ্ধতি ব্যবহার করেন অথবা requests.post() , পাইথন ওয়েব রিসোর্সে একটি অনুরোধ করবে যা আপনি অ্যাক্সেস করতে চান। আপনি আপনার অনুরোধের সাথে শিরোনাম এবং ডেটা সংযুক্ত করতে পারেন, যা আপনাকে তথ্য পাঠাতে দেয় যদি আপনি আপনার মালিকানাধীন কোনো ওয়েব রিসোর্সে পরিবর্তন করতে চান।

এখন আপনি একজন বিশেষজ্ঞের মতো পাইথন অনুরোধ লাইব্রেরি ব্যবহার শুরু করতে প্রস্তুত!


  1. পাইথন দোভাষী:একটি ধাপে ধাপে গাইড

  2. পাইথন খুঁজুন:একটি গাইড

  3. পাইথন অগ্রাধিকার সারি:একটি গাইড

  4. পাইথন অভিধানের মান:একটি গাইড