CherryPy তে Middleware হল এমন একটি কাস্টম কোড যা HTTP রিকোয়েস্ট বা রেসপন্সের উপর প্রক্রিয়া চালায়। Middleware সাধারণত রিকোয়েস্টের আগে বা পরে কিছু কাজ করার জন্য ব্যবহৃত হয়, যেমন লগিং, অথেনটিকেশন, সেশন ম্যানেজমেন্ট বা রিকোয়েস্ট বা রেসপন্স ডেটার পরিবর্তন। CherryPy তে middleware তৈরি করার জন্য cherrypy.Tool ব্যবহার করা হয়।
Middleware কাস্টমাইজেশন
CherryPy তে middleware তৈরি করতে হলে, Tools ব্যবহার করা হয়, যা বিভিন্ন ধরনের কাজ করতে পারে যেমন, রিকোয়েস্ট হ্যান্ডলিং, রেসপন্স বদলানো, লগিং, সেশন ম্যানেজমেন্ট ইত্যাদি।
CherryPy তে Custom Middleware তৈরি করার প্রক্রিয়া
১. Tools ব্যবহার করে Middleware তৈরি করা। ২. Middleware তে হুক সেট করা যেমন, before_handler, after_handler। ৩. CherryPy অ্যাপ্লিকেশনে ওই middleware ব্যবহার করা।
এখন চলুন এক্সাম্পল দেখে, কিভাবে CherryPy তে custom middleware তৈরি করা যায়।
উদাহরণ: Custom Middleware তৈরি করা
আমরা একটি সাধারণ middleware তৈরি করব, যা প্রতিটি রিকোয়েস্টের সময় লগ করবে এবং রেসপন্সের পর একটি মেসেজ প্রিন্ট করবে।
কোড উদাহরণ:
import cherrypy
import logging
# কাস্টম মিডলওয়্যার তৈরি করা
class CustomMiddleware(object):
def __init__(self):
# লগিং সেটআপ
self.logger = logging.getLogger('cherrypy.custom_middleware')
logging.basicConfig(level=logging.INFO)
def before_handler(self):
"""প্রতিটি রিকোয়েস্টের আগে কাজ করবে"""
self.logger.info("Request received: %s", cherrypy.request.path_info)
def after_handler(self):
"""প্রতিটি রেসপন্সের পরে কাজ করবে"""
self.logger.info("Response sent for: %s", cherrypy.request.path_info)
# CherryPy অ্যাপ্লিকেশন
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
# কাস্টম টুল তৈরি করা
cherrypy.tools.custom_middleware = cherrypy.Tool('before_handler', CustomMiddleware().before_handler)
cherrypy.tools.custom_middleware_after = cherrypy.Tool('after_handler', CustomMiddleware().after_handler)
if __name__ == '__main__':
# CherryPy কনফিগারেশন
cherrypy.config.update({
'tools.custom_middleware.on': True, # before_handler কল করা
'tools.custom_middleware_after.on': True # after_handler কল করা
})
cherrypy.quickstart(MyApp())
কোড ব্যাখ্যা:
CustomMiddlewareক্লাস তৈরি করা হয়েছে, যেখানে দুইটি মেথড রয়েছে:before_handler: রিকোয়েস্ট আসার আগে এক্সিকিউট হবে এবং লগ করবে।after_handler: রেসপন্স পাঠানোর পরে এক্সিকিউট হবে এবং লগ করবে।
cherrypy.tools.custom_middlewareওcherrypy.tools.custom_middleware_afterএই দুটি টুল তৈরি করেbefore_handlerএবংafter_handlerএর জন্য।- CherryPy এর
cherrypy.Toolব্যবহৃত হচ্ছেbefore_handlerএবংafter_handlerএর জন্য, যাতে রিকোয়েস্ট এবং রেসপন্সের সময় নির্দিষ্ট কোড এক্সিকিউট করা যায়। cherrypy.config.updateদিয়ে middleware-কে CherryPy অ্যাপ্লিকেশন কনফিগার করা হয়েছে।
Middleware-এর কার্যকরী ব্যবহার
এখন আপনি যখন http://127.0.0.1:8080/ তে অ্যাক্সেস করবেন, তখন চেরিপাই লগে রিকোয়েস্টের আগের এবং পরবর্তী সময়ের তথ্য দেখাবে।
লগ আউটপুট:
INFO:cherrypy.custom_middleware:Request received: /
INFO:cherrypy.custom_middleware:Response sent for: /
এখানে:
Request received:লগে দেখা যাবে যখন রিকোয়েস্ট আসবে।Response sent for:লগে দেখা যাবে যখন রেসপন্স ফেরত যাবে।
CherryPy তে Custom Middleware এর অন্যান্য ব্যবহার
- অথেনটিকেশন: ইউজারের অথেনটিকেশন চেক করতে middleware ব্যবহার করা যেতে পারে।
- লগিং: API রিকোয়েস্ট এবং রেসপন্স ট্র্যাক করার জন্য লোগিং সিস্টেম তৈরি করা যেতে পারে।
- রেসপন্স বদলানো: রেসপন্সে কোন তথ্য যোগ বা মুছে ফেলা (যেমন JSON রেসপন্সে অতিরিক্ত ডেটা যোগ করা)।
- রিকোয়েস্ট পরিবর্তন: রিকোয়েস্টে কিছু পরিবর্তন যেমন ইউজার ডেটা যোগ করা বা কোনো ভ্যালিডেশন করা।
CherryPy তে Custom Middleware ব্যবহার করে আপনি খুব সহজে রিকোয়েস্ট বা রেসপন্সের সাথে কাজ করতে পারেন। Middleware আপনাকে API বা ওয়েব অ্যাপ্লিকেশনের মধ্যে অতিরিক্ত কার্যক্রম যেমন লগিং, অথেনটিকেশন, সেশন ম্যানেজমেন্ট, বা রিকোয়েস্ট/রেসপন্স ম্যানিপুলেশন করতে সাহায্য করে। CherryPy তে cherrypy.Tool ব্যবহার করে Middleware তৈরি করা খুবই সহজ, এবং এটি কাস্টমাইজেবল যাতে আপনি আপনার প্রয়োজন অনুযায়ী সিস্টেম তৈরি করতে পারেন।
Read more