CherryPy দিয়ে RESTful API তৈরি করা অত্যন্ত সহজ। REST (Representational State Transfer) একটি আর্কিটেকচারাল স্টাইল, যা ওয়েব সার্ভিস এবং API গুলিকে HTTP পদ্ধতি (GET, POST, PUT, DELETE) ব্যবহার করে যোগাযোগ করতে সক্ষম করে। CherryPy তে আপনি RESTful API তৈরি করার জন্য HTTP মেথড সমর্থনকারী মেথডগুলো ব্যবহার করতে পারেন।
এখানে CherryPy ব্যবহার করে একটি সিম্পল RESTful API তৈরি করার প্রক্রিয়া বিস্তারিতভাবে দেখানো হবে।
RESTful API কি?
RESTful API হলো এমন একটি API যা HTTP প্রোটোকল ব্যবহার করে তথ্য আদান-প্রদান করে। সাধারণত, এটি 4টি HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে:
- GET: ডেটা রিট্রিভ করতে ব্যবহার করা হয়।
- POST: নতুন ডেটা তৈরি করতে ব্যবহার করা হয়।
- PUT: বিদ্যমান ডেটা আপডেট করতে ব্যবহার করা হয়।
- DELETE: ডেটা মুছতে ব্যবহার করা হয়।
CherryPy দিয়ে RESTful API তৈরি করার জন্য প্রথমে CherryPy ইনস্টল করুন
pip install cherrypy
CherryPy দিয়ে একটি সিম্পল RESTful API তৈরি করা
উদাহরণ: RESTful API (GET, POST, PUT, DELETE)
import cherrypy
import json
class MyAPI:
def __init__(self):
self.data = {
1: {'name': 'Alice', 'age': 25},
2: {'name': 'Bob', 'age': 30}
}
# GET মেথড: নির্দিষ্ট ID এর তথ্য রিটার্ন করে
@cherrypy.expose
@cherrypy.tools.json_out()
def get_user(self, user_id=None):
if user_id is None:
# সব ব্যবহারকারী রিটার্ন
return self.data
else:
user_id = int(user_id)
return self.data.get(user_id, {'error': 'User not found'})
# POST মেথড: নতুন ব্যবহারকারী তৈরি
@cherrypy.expose
@cherrypy.tools.json_in()
@cherrypy.tools.json_out()
def create_user(self):
user = cherrypy.request.json
user_id = max(self.data.keys()) + 1
self.data[user_id] = user
return {'message': 'User created', 'user_id': user_id}
# PUT মেথড: বিদ্যমান ব্যবহারকারীর তথ্য আপডেট করা
@cherrypy.expose
@cherrypy.tools.json_in()
@cherrypy.tools.json_out()
def update_user(self, user_id=None):
if user_id is None:
return {'error': 'User ID required'}
user_id = int(user_id)
if user_id in self.data:
user = cherrypy.request.json
self.data[user_id].update(user)
return {'message': 'User updated'}
else:
return {'error': 'User not found'}
# DELETE মেথড: ব্যবহারকারী মুছতে
@cherrypy.expose
@cherrypy.tools.json_out()
def delete_user(self, user_id=None):
if user_id is None:
return {'error': 'User ID required'}
user_id = int(user_id)
if user_id in self.data:
del self.data[user_id]
return {'message': 'User deleted'}
else:
return {'error': 'User not found'}
if __name__ == '__main__':
cherrypy.quickstart(MyAPI())
ব্যাখ্যা:
@cherrypy.expose: এই ডেকোরেটরটি CherryPy এর মাধ্যমে HTTP রিকোয়েস্ট হ্যান্ডেল করার জন্য ব্যবহৃত হয়।@cherrypy.tools.json_out(): এই টুলটি JSON আউটপুট রিটার্ন করতে ব্যবহৃত হয়।@cherrypy.tools.json_in(): এই টুলটি ইনপুট হিসেবে JSON ডেটা গ্রহণ করতে ব্যবহৃত হয়।self.data: একটি ডিকশনারির মাধ্যমে স্টোর করা ডেমো ডেটা।
মেথডসমূহ:
- GET /users/{id}: নির্দিষ্ট ব্যবহারকারীর ডেটা রিটার্ন করবে। যদি ID না দেওয়া হয়, তাহলে সমস্ত ব্যবহারকারীর তালিকা রিটার্ন করবে।
- POST /users: নতুন ব্যবহারকারী তৈরি করবে।
- PUT /users/{id}: নির্দিষ্ট ব্যবহারকারীর তথ্য আপডেট করবে।
- DELETE /users/{id}: নির্দিষ্ট ব্যবহারকারী মুছে ফেলবে।
API পরীক্ষা করা
1. GET: সমস্ত ব্যবহারকারীর তালিকা দেখুন
GET http://127.0.0.1:8080/get_user
2. GET: নির্দিষ্ট ব্যবহারকারী দেখুন
GET http://127.0.0.1:8080/get_user/1
3. POST: নতুন ব্যবহারকারী তৈরি করুন
curl -X POST http://127.0.0.1:8080/create_user -H "Content-Type: application/json" -d '{"name": "Charlie", "age": 35}'
4. PUT: ব্যবহারকারীর তথ্য আপডেট করুন
curl -X PUT http://127.0.0.1:8080/update_user/2 -H "Content-Type: application/json" -d '{"name": "Bob", "age": 31}'
5. DELETE: ব্যবহারকারী মুছুন
curl -X DELETE http://127.0.0.1:8080/delete_user/1
CherryPy RESTful API এর সুবিধা:
- সহজ এবং দ্রুত সেটআপ: CherryPy এর সাথে RESTful API তৈরি করা দ্রুত এবং সহজ।
- JSON হ্যান্ডলিং: CherryPy JSON ইনপুট এবং আউটপুট সাপোর্ট করে, যা API ডেভেলপমেন্টে খুবই উপকারী।
- ফ্লেক্সিবিলিটি: CherryPy দিয়ে RESTful API খুবই নমনীয়ভাবে কাস্টমাইজ করা যায় এবং সহজে সেলফ-ডকুমেন্টিং তৈরি করা সম্ভব।
CherryPy ব্যবহার করে আপনি সহজেই RESTful API তৈরি করতে পারেন যা HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে ডেটা পরিচালনা করতে সক্ষম। CherryPy এর সিম্পল সিনট্যাক্স এবং JSON টুলস এর মাধ্যমে দ্রুত ও কার্যকরী API তৈরি সম্ভব।
Read more