CherryPy একটি শক্তিশালী ওয়েব ফ্রেমওয়ার্ক, যা API রাউটিং এবং ডাইনামিক JSON/XML রেসপন্স তৈরি করতে খুবই উপযোগী। CherryPy ব্যবহার করে আপনি সহজেই RESTful API তৈরি করতে পারেন এবং প্রয়োজন অনুযায়ী JSON বা XML ফরম্যাটে রেসপন্স পাঠাতে পারেন।
এখানে আমরা CherryPy তে API Routing এবং JSON/XML Response তৈরি করার পদ্ধতি আলোচনা করব।
১. API Routing (RESTful API)
CherryPy তে API রাউটিং সহজ এবং নমনীয়। আপনি @cherrypy.expose ডেকোরেটর ব্যবহার করে বিভিন্ন API রুট তৈরি করতে পারেন। CherryPy রাউটিং আপনাকে API এন্ডপয়েন্ট তৈরি এবং URL পাথের জন্য রিসোর্সগুলি পরিচালনা করতে সাহায্য করে।
উদাহরণ: RESTful API Routing
import cherrypy
class MyAPI:
@cherrypy.expose
def index(self):
return "API এর জন্য স্বাগতম!"
@cherrypy.expose
def user(self, user_id):
return f"এটি ইউজার {user_id} এর পেজ।"
@cherrypy.expose
def products(self):
return "এটি প্রোডাক্ট API এর পেজ।"
if __name__ == '__main__':
cherrypy.quickstart(MyAPI())
এখানে:
indexরুটটি/পাথের জন্য।userরুটটি/user/<user_id>পাথের জন্য কাজ করবে।productsরুটটি/productsপাথের জন্য কাজ করবে।
২. JSON Response তৈরি করা
CherryPy তে JSON রেসপন্স তৈরি করতে আপনি Python এর json লাইব্রেরি ব্যবহার করতে পারেন। API রাউট থেকে ডাটা JSON ফরম্যাটে ফেরত দিতে cherrypy.response.headers['Content-Type'] সেট করতে হয়।
উদাহরণ: JSON Response তৈরি করা
import cherrypy
import json
class MyAPI:
@cherrypy.expose
def index(self):
data = {"message": "API এর জন্য স্বাগতম!"}
cherrypy.response.headers['Content-Type'] = 'application/json'
return json.dumps(data)
@cherrypy.expose
def user(self, user_id):
user_data = {
"user_id": user_id,
"name": "John Doe",
"email": "johndoe@example.com"
}
cherrypy.response.headers['Content-Type'] = 'application/json'
return json.dumps(user_data)
if __name__ == '__main__':
cherrypy.quickstart(MyAPI())
এখানে:
indexরুট JSON রেসপন্স হিসেবে"message": "API এর জন্য স্বাগতম!"পাঠায়।userরুট ব্যবহারকারীর আইডি অনুযায়ী একটি JSON ডেটা ফেরত পাঠায়।
৩. XML Response তৈরি করা
XML রেসপন্স তৈরির জন্য Python এর xml.etree.ElementTree লাইব্রেরি ব্যবহার করা যেতে পারে। CherryPy তে, JSON রেসপন্সের মতোই XML রেসপন্স তৈরি করতে cherrypy.response.headers['Content-Type'] সেট করতে হবে।
উদাহরণ: XML Response তৈরি করা
import cherrypy
import xml.etree.ElementTree as ET
class MyAPI:
@cherrypy.expose
def index(self):
response_data = ET.Element('response')
message = ET.SubElement(response_data, 'message')
message.text = "API এর জন্য স্বাগতম!"
cherrypy.response.headers['Content-Type'] = 'application/xml'
return ET.tostring(response_data, encoding='unicode')
@cherrypy.expose
def user(self, user_id):
response_data = ET.Element('user')
user = ET.SubElement(response_data, 'id')
user.text = user_id
name = ET.SubElement(response_data, 'name')
name.text = "John Doe"
email = ET.SubElement(response_data, 'email')
email.text = "johndoe@example.com"
cherrypy.response.headers['Content-Type'] = 'application/xml'
return ET.tostring(response_data, encoding='unicode')
if __name__ == '__main__':
cherrypy.quickstart(MyAPI())
এখানে:
indexরুট XML রেসপন্স হিসেবে"message": "API এর জন্য স্বাগতম!"পাঠায়।userরুট ব্যবহারকারীর তথ্য XML ফরম্যাটে ফেরত পাঠায়।
৪. Query Parameters এবং JSON/XML Response
CherryPy তে আপনি URL এর সাথে query parameters পাঠিয়ে ডেটা প্রসেস করতে পারেন এবং JSON বা XML রেসপন্স ফিরিয়ে দিতে পারেন।
উদাহরণ: Query Parameters ব্যবহার করে JSON Response তৈরি
import cherrypy
import json
class MyAPI:
@cherrypy.expose
def index(self, name="Guest"):
data = {"message": f"স্বাগতম, {name}!"}
cherrypy.response.headers['Content-Type'] = 'application/json'
return json.dumps(data)
if __name__ == '__main__':
cherrypy.quickstart(MyAPI())
এখানে, আপনি http://127.0.0.1:8080/index?name=John দিয়ে JSON রেসপন্স হিসেবে "message": "স্বাগতম, John!" পেতে পারেন।
৫. HTTP Methods (GET, POST, PUT, DELETE) ব্যবহার
CherryPy তে HTTP methods (GET, POST, PUT, DELETE) সমর্থিত, যা API রাউটিংয়ের জন্য ব্যবহৃত হয়। আপনি @cherrypy.expose ডেকোরেটরের মাধ্যমে নির্দিষ্ট HTTP method এর জন্য রাউট তৈরি করতে পারেন।
উদাহরণ: HTTP Methods ব্যবহার করে API
import cherrypy
import json
class MyAPI:
@cherrypy.expose
def index(self):
return "এটি একটি GET রিকোয়েস্টের রেসপন্স!"
@cherrypy.expose
@cherrypy.tools.allow(methods=['POST'])
def post_data(self, data=None):
response_data = {"message": "POST রিকোয়েস্ট সফল!", "received_data": data}
cherrypy.response.headers['Content-Type'] = 'application/json'
return json.dumps(response_data)
if __name__ == '__main__':
cherrypy.quickstart(MyAPI())
এখানে:
indexরুট GET রিকোয়েস্টের জন্য রেসপন্স প্রদান করে।post_dataরুট POST রিকোয়েস্টের জন্য ডেটা গ্রহণ করে এবং JSON রেসপন্স প্রদান করে।
CherryPy তে API Routing এবং JSON/XML Response তৈরি করা খুবই সহজ এবং শক্তিশালী। CherryPy এর @cherrypy.expose ডেকোরেটর এবং HTTP methods এর মাধ্যমে আপনি RESTful API তৈরি করতে পারেন এবং JSON/XML রেসপন্স প্রদান করতে পারেন। CherryPy এর এই বৈশিষ্ট্যগুলি আপনাকে একটি শক্তিশালী, সাশ্রয়ী এবং সিম্পল API তৈরি করতে সহায়তা করবে।
Read more