রুবি ভাষায় HTTP রিকোয়েস্ট এবং রেসপন্স হ্যান্ডল করা খুবই সহজ এবং কার্যকরী। এটি ওয়েব ডেভেলপমেন্টে অত্যন্ত গুরুত্বপূর্ণ, বিশেষত যখন আপনি একটি ওয়েব সার্ভার তৈরি করতে চান বা অন্য সার্ভিসের সাথে ইন্টারঅ্যাক্ট করতে চান। HTTP (Hypertext Transfer Protocol) রিকোয়েস্ট এবং রেসপন্স হ্যান্ডল করতে বিভিন্ন লাইব্রেরি ব্যবহার করা যায়, এবং সবচেয়ে সাধারণ লাইব্রেরি হলো Net::HTTP, HTTParty, এবং Faraday।
এখানে আমরা Net::HTTP লাইব্রেরি এবং অন্যান্য জনপ্রিয় লাইব্রেরি ব্যবহার করে HTTP রিকোয়েস্ট এবং রেসপন্স হ্যান্ডল করার মৌলিক ধারণা এবং উদাহরণ দেখবো।
1. Net::HTTP লাইব্রেরি ব্যবহার করে HTTP Requests এবং Responses
রুবির Net::HTTP একটি বিল্ট-ইন লাইব্রেরি যা HTTP রিকোয়েস্ট পাঠানোর জন্য এবং রেসপন্স গ্রহণের জন্য ব্যবহৃত হয়। এটি মূলত স্ট্যান্ডার্ড রুবি লাইব্রেরি হিসেবে অন্তর্ভুক্ত থাকে এবং সহজেই HTTP প্রোটোকল ব্যবহার করতে পারে।
HTTP GET রিকোয়েস্ট
GET রিকোয়েস্ট সার্ভার থেকে ডেটা পেতে ব্যবহৃত হয়। এটি সাধারণত ওয়েব পেজ বা API রেসপন্স পাওয়ার জন্য ব্যবহৃত হয়।
উদাহরণ:
require 'net/http'
require 'uri'
url = URI.parse('https://jsonplaceholder.typicode.com/posts/1')
response = Net::HTTP.get_response(url)
puts "Response code: #{response.code}" # আউটপুট: 200
puts "Response body: #{response.body}" # আউটপুট: রেসপন্স বডিএখানে, Net::HTTP.get_response মেথড ব্যবহার করে GET রিকোয়েস্ট পাঠানো হয়েছে এবং রেসপন্স কোড ও বডি আউটপুট করা হয়েছে।
HTTP POST রিকোয়েস্ট
POST রিকোয়েস্ট সাধারণত সার্ভারে নতুন ডেটা পাঠাতে ব্যবহৃত হয়, যেমন ফর্ম ডেটা সাবমিট করা।
উদাহরণ:
require 'net/http'
require 'uri'
require 'json'
url = URI.parse('https://jsonplaceholder.typicode.com/posts')
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url.path,
{'Content-Type' => 'application/json'})
request.body = {title: 'foo', body: 'bar', userId: 1}.to_json
response = http.request(request)
puts "Response code: #{response.code}" # আউটপুট: 201
puts "Response body: #{response.body}" # আউটপুট: রেসপন্স বডিএখানে, একটি POST রিকোয়েস্ট তৈরি করা হয়েছে, যেখানে JSON ডেটা পাঠানো হয়েছে।
2. HTTParty ব্যবহার করে HTTP Requests এবং Responses
HTTParty একটি জনপ্রিয় রুবি লাইব্রেরি যা HTTP রিকোয়েস্ট এবং রেসপন্স হ্যান্ডলিংয়ের জন্য আরও সহজ এবং শক্তিশালী ইন্টারফেস প্রদান করে। এটি GET, POST, PUT, DELETE সহ বিভিন্ন HTTP মেথডকে সাপোর্ট করে।
HTTParty ইনস্টল করা
gem install httpartyHTTP GET রিকোয়েস্ট
require 'httparty'
response = HTTParty.get('https://jsonplaceholder.typicode.com/posts/1')
puts "Response code: #{response.code}" # আউটপুট: 200
puts "Response body: #{response.body}" # আউটপুট: রেসপন্স বডিএখানে, HTTParty.get মেথড ব্যবহার করে GET রিকোয়েস্ট পাঠানো হয়েছে এবং রেসপন্স কোড এবং বডি দেখানো হয়েছে।
HTTP POST রিকোয়েস্ট
require 'httparty'
response = HTTParty.post('https://jsonplaceholder.typicode.com/posts',
body: {title: 'foo', body: 'bar', userId: 1}.to_json,
headers: {'Content-Type' => 'application/json'})
puts "Response code: #{response.code}" # আউটপুট: 201
puts "Response body: #{response.body}" # আউটপুট: রেসপন্স বডিএখানে, HTTParty.post ব্যবহার করে POST রিকোয়েস্ট পাঠানো হয়েছে এবং JSON ডেটা সার্ভারে পাঠানো হয়েছে।
3. Faraday ব্যবহার করে HTTP Requests এবং Responses
Faraday আরেকটি শক্তিশালী HTTP ক্লায়েন্ট লাইব্রেরি যা রুবিতে HTTP রিকোয়েস্ট এবং রেসপন্স হ্যান্ডল করার জন্য ব্যবহৃত হয়। এটি অনেক প্লাগইন এবং অ্যাডাপ্টারের সাথে কাজ করে, যেমন Net::HTTP, Typhoeus, ইত্যাদি।
Faraday ইনস্টল করা
gem install faradayHTTP GET রিকোয়েস্ট
require 'faraday'
connection = Faraday.new(url: 'https://jsonplaceholder.typicode.com')
response = connection.get('/posts/1')
puts "Response code: #{response.status}" # আউটপুট: 200
puts "Response body: #{response.body}" # আউটপুট: রেসপন্স বডিএখানে, Faraday.new দিয়ে একটি HTTP কনেকশন তৈরি করা হয়েছে এবং get মেথড ব্যবহার করে GET রিকোয়েস্ট পাঠানো হয়েছে।
HTTP POST রিকোয়েস্ট
require 'faraday'
require 'json'
connection = Faraday.new(url: 'https://jsonplaceholder.typicode.com')
response = connection.post('/posts', {title: 'foo', body: 'bar', userId: 1}.to_json,
{'Content-Type' => 'application/json'})
puts "Response code: #{response.status}" # আউটপুট: 201
puts "Response body: #{response.body}" # আউটপুট: রেসপন্স বডিএখানে, Faraday.new দিয়ে কনেকশন তৈরি করা হয়েছে এবং post মেথড দিয়ে POST রিকোয়েস্ট পাঠানো হয়েছে।
HTTP Requests এবং Responses হ্যান্ডল করার সাধারণ পদ্ধতি
- GET রিকোয়েস্ট: ডেটা সংগ্রহ বা ওয়েব পেজ রেন্ডার করার জন্য ব্যবহৃত হয়।
- POST রিকোয়েস্ট: সার্ভারে ডেটা সাবমিট করার জন্য ব্যবহৃত হয়, যেমন ফর্ম ডেটা।
- PUT/PATCH রিকোয়েস্ট: সার্ভারে একটি সম্পূর্ণ বা আংশিক রিসোর্স আপডেট করার জন্য ব্যবহৃত হয়।
- DELETE রিকোয়েস্ট: সার্ভার থেকে একটি রিসোর্স মুছে ফেলার জন্য ব্যবহৃত হয়।
এছাড়া, রুবিতে response code, headers, body ইত্যাদি বিভিন্ন রেসপন্স ডিটেইলস অ্যাক্সেস করতে পারবেন এবং error handling (যেমন 404, 500) করতে পারবেন।
সারসংক্ষেপ
- Net::HTTP, HTTParty, এবং Faraday হল রুবিতে HTTP রিকোয়েস্ট এবং রেসপন্স হ্যান্ডল করার জন্য ব্যবহৃত জনপ্রিয় লাইব্রেরি।
- GET, POST, PUT, DELETE রিকোয়েস্টগুলি ওয়েব সার্ভিসের সাথে ইন্টারঅ্যাক্ট করতে ব্যবহৃত হয়।
- HTTParty এবং Faraday লাইব্রেরি HTTP রিকোয়েস্ট এবং রেসপন্সের জন্য আরও সহজ এবং শক্তিশালী ইন্টারফেস প্রদান করে।
এগুলি ব্যবহার করে আপনি সহজেই রুবির মাধ্যমে HTTP রিকোয়েস্ট এবং রেসপন্স হ্যান্ডল করতে পারেন।
Read more