REST (Representational State Transfer) API একটি আর্কিটেকচারাল স্টাইল যা ওয়েব সার্ভিসেসে ব্যাপকভাবে ব্যবহৃত হয়। এটি HTTP প্রটোকল এবং URL স্ট্রাকচার ব্যবহার করে, যা সহজ, লাইটওয়েট এবং স্কেলেবল ওয়েব সার্ভিস তৈরির জন্য আদর্শ। CherryPy, একটি পাইথন-ভিত্তিক ওয়েব ফ্রেমওয়ার্ক, ব্যবহার করে RESTful API তৈরি করা খুবই সহজ।
REST API একটি ক্লায়েন্ট-সার্ভার আর্কিটেকচার অনুসরণ করে, যেখানে ক্লায়েন্ট সার্ভারের সাথে HTTP মেথডের মাধ্যমে যোগাযোগ করে। CherryPy এই প্রক্রিয়া সরল এবং কার্যকরীভাবে পরিচালনা করতে সহায়তা করে।
RESTful API এর মৌলিক ধারণা
RESTful API তৈরি করার জন্য কিছু মৌলিক ধারণা রয়েছে যা আপনাকে API ডিজাইন এবং কনফিগারেশন করতে সাহায্য করবে। এখানে REST API এর কিছু মূল বৈশিষ্ট্য ব্যাখ্যা করা হলো:
১. HTTP মেথডস (GET, POST, PUT, DELETE)
RESTful API সাধারণত ৪টি HTTP মেথড ব্যবহার করে:
- GET: ডেটা রিট্রিভ করার জন্য ব্যবহার হয় (যেমন, একটি রেকর্ড পড়া)।
- POST: নতুন ডেটা তৈরি করার জন্য ব্যবহার হয় (যেমন, একটি নতুন রেকর্ড তৈরি করা)।
- PUT: বিদ্যমান ডেটা আপডেট করার জন্য ব্যবহার হয়।
- DELETE: ডেটা মুছে ফেলার জন্য ব্যবহার হয়।
২. Stateless (স্টেটলেস)
RESTful API তে প্রতিটি রিকোয়েস্ট সম্পূর্ণভাবে স্বাধীন। সার্ভার কোনও স্টেট (অর্থাৎ পূর্ববর্তী রিকোয়েস্টের তথ্য) সংরক্ষণ করে না। প্রতিটি রিকোয়েস্টের মধ্যে সমস্ত প্রয়োজনীয় ডেটা থাকা উচিত।
৩. Resources (রিসোর্সেস)
RESTful API তে "Resources" হলো যেকোনো তথ্য বা সেবা যা API প্রদানের মাধ্যমে অ্যাক্সেসযোগ্য। প্রতিটি রিসোর্স একটি ইউনিক URL দ্বারা চিহ্নিত করা হয়। উদাহরণস্বরূপ, একটি User রিসোর্সের URL হতে পারে /users।
৪. JSON/XML Format (ডেটা ফরম্যাট)
RESTful API সাধারণত JSON (JavaScript Object Notation) বা XML (Extensible Markup Language) ফরম্যাটে ডেটা আদান-প্রদান করে। JSON বর্তমানে সবচেয়ে জনপ্রিয় ডেটা ফরম্যাট হিসাবে ব্যবহৃত হয়।
CherryPy তে REST API তৈরি করা
CherryPy দিয়ে REST API তৈরি করতে খুব সহজ এবং পরিষ্কার। নিচে CherryPy তে একটি RESTful API তৈরি করার মৌলিক উদাহরণ দেখানো হলো।
উদাহরণ: CherryPy তে RESTful API তৈরি
import cherrypy
import json
class RestAPI:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy REST API-তে!"
@cherrypy.expose
@cherrypy.tools.json_out() # JSON আউটপুট তৈরি করার জন্য টুল
def get_users(self):
users = [
{"id": 1, "name": "Alice", "email": "alice@example.com"},
{"id": 2, "name": "Bob", "email": "bob@example.com"}
]
return {"users": users}
@cherrypy.expose
@cherrypy.tools.json_in() # ইনপুট JSON গ্রহণ করার জন্য টুল
def create_user(self):
user_data = cherrypy.request.json # JSON ডেটা গ্রহণ
user_id = 3 # সাধারণত ডাটাবেস থেকে আইডি তৈরি করা হয়
return json.dumps({"message": "User created", "user_id": user_id, "data": user_data})
@cherrypy.expose
def delete_user(self, user_id):
return json.dumps({"message": f"User {user_id} deleted"})
if __name__ == '__main__':
cherrypy.quickstart(RestAPI())
কোড ব্যাখ্যা:
@cherrypy.expose: CherryPy মেথডগুলিকে URL পাথের সাথে সংযুক্ত করে।@cherrypy.tools.json_out(): এই টুলটি মেথডের আউটপুটকে JSON ফরম্যাটে কনভার্ট করে।@cherrypy.tools.json_in(): এই টুলটি ইনপুট হিসাবে JSON ডেটা গ্রহণ করে।get_users: এটি একটি GET রিকোয়েস্ট হ্যান্ডলিং মেথড, যা ব্যবহারকারীদের তথ্য রিটার্ন করে।create_user: এটি একটি POST রিকোয়েস্ট হ্যান্ডলিং মেথড, যা নতুন ব্যবহারকারী তৈরি করে।delete_user: এটি DELETE রিকোয়েস্ট হ্যান্ডলিং মেথড, যা নির্দিষ্ট একটি ব্যবহারকারী মুছে ফেলে।
রান করার পর:
- GET রিকোয়েস্ট (যেমন:
http://localhost:8080/get_users) ব্যবহারকারীদের তালিকা রিটার্ন করবে। - POST রিকোয়েস্ট (যেমন:
http://localhost:8080/create_user) নতুন ব্যবহারকারী তৈরি করবে। - DELETE রিকোয়েস্ট (যেমন:
http://localhost:8080/delete_user/1) ব্যবহারকারী মুছে ফেলবে।
CherryPy তে JSON API তৈরি করা
CherryPy তে JSON API তৈরি করতে, আপনি tools.json_out() এবং tools.json_in() ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
উদাহরণ: JSON API
import cherrypy
import json
class JsonAPI:
@cherrypy.expose
@cherrypy.tools.json_out()
def index(self):
return {"message": "This is a JSON response"}
@cherrypy.expose
@cherrypy.tools.json_in()
def create_data(self):
input_data = cherrypy.request.json
response = {
"message": "Data received successfully",
"data": input_data
}
return response
if __name__ == '__main__':
cherrypy.quickstart(JsonAPI())
এখানে:
tools.json_out(): আউটপুট হিসেবে JSON রিটার্ন করবে।tools.json_in(): ইনপুট হিসেবে JSON ডেটা গ্রহণ করবে।
ব্রাউজার বা HTTP ক্লায়েন্টের মাধ্যমে API কল:
- GET রিকোয়েস্ট:
http://localhost:8080ব্রাউজারে গেলে আপনি JSON আউটপুট দেখতে পাবেন। - POST রিকোয়েস্ট:
http://localhost:8080/create_dataএ JSON ডেটা পাঠালে, API সেই ডেটাকে গ্রহণ করবে এবং JSON আউটপুট রিটার্ন করবে।
CherryPy তে RESTful API এর জন্য আরও কিছু উন্নত ফিচার
- Authentication: CherryPy তে API অথেনটিকেশন বাস্তবায়ন করা যেতে পারে (যেমন Basic Authentication, Token-Based Authentication)।
- CORS (Cross-Origin Resource Sharing): API তে CORS সমর্থন প্রদান করতে, যাতে অন্য ডোমেইন থেকে API রিকোয়েস্ট করা যায়।
- Error Handling: RESTful API তে সাধারণ HTTP স্ট্যাটাস কোড (যেমন 404 Not Found, 500 Internal Server Error) ব্যবহারের মাধ্যমে ত্রুটি হ্যান্ডলিং করা যায়।
- Pagination: বড় ডেটাসেট গুলি পেজিনেট করার জন্য API এ pagination যুক্ত করা যেতে পারে।
CherryPy দিয়ে RESTful API তৈরি করা খুবই সহজ এবং সোজা। CherryPy এর tools.json_out() এবং tools.json_in() টুলস JSON ডেটার সাথে কাজ করার জন্য খুবই কার্যকর। RESTful API ডিজাইন করতে হলে GET, POST, PUT, এবং DELETE মেথডগুলির সঠিক ব্যবহার গুরুত্বপূর্ণ, এবং CherryPy এই কাজটি খুবই সহজ করে তোলে।
Read more