Flask অ্যাপ্লিকেশনে Request এবং Response অবজেক্ট দুটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি HTTP রিকোয়েস্ট এবং রেসপন্সের সাথে সম্পর্কিত তথ্য ধারণ করে এবং ব্যবস্থাপনা করতে সহায়ক হয়।
১. Request Object
Flask-এ Request Object HTTP রিকোয়েস্টের সব তথ্য ধারণ করে, যেমন রিকোয়েস্টের পদ্ধতি (GET, POST), কন্টেন্ট টাইপ, ফর্ম ডেটা, ইউআরএল প্যারামিটার ইত্যাদি। Flask অ্যাপ্লিকেশনে ইউজার যখন একটি রিকোয়েস্ট পাঠায়, তখন request অবজেক্টটি সেই রিকোয়েস্ট সম্পর্কিত সমস্ত তথ্য সংগ্রহ করে।
Request Object থেকে বিভিন্ন তথ্য আহরণ
from flask import Flask, request
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def home():
if request.method == "POST":
# POST রিকোয়েস্টে পাঠানো ডেটা
name = request.form.get("name")
return f"আপনি {name} পাঠিয়েছেন!"
return '''
<form method="POST">
নাম: <input type="text" name="name">
<input type="submit" value="সাবমিট">
</form>
'''
if __name__ == "__main__":
app.run(debug=True)
এখানে:
request.method: এটি রিকোয়েস্টের HTTP পদ্ধতি (GET বা POST) চেক করতে ব্যবহৃত হয়।request.form: এটি ফর্ম ডেটা সংগ্রহ করতে ব্যবহৃত হয়। POST রিকোয়েস্টে ফর্ম ডেটাrequest.formএর মাধ্যমে অ্যাক্সেস করা যায়।request.args: এটি URL প্যারামিটার বা কোয়েরি স্ট্রিং থেকে ডেটা আহরণ করতে ব্যবহৃত হয়।
Request Object থেকে কিছু গুরুত্বপূর্ণ তথ্য:
request.method: রিকোয়েস্টের HTTP মেথড (GET, POST, PUT, DELETE)।request.args: URL প্যারামিটার (যেমন:/user?name=Johnএর জন্যrequest.args['name']হবে'John')।request.form: POST ফর্ম ডেটা (যেমন: HTML ফর্ম থেকে পাঠানো ডেটা)।request.json: JSON পে-লোড (যদি রিকোয়েস্টে JSON থাকে)।request.headers: HTTP হেডার ইনফরমেশন (যেমন:Content-Type,User-Agent)।request.cookies: রিকোয়েস্টের কুকি তথ্য।
উদাহরণ:
@app.route("/profile")
def profile():
username = request.args.get("username", "Guest") # URL থেকে 'username' প্যারামিটার পাওয়া
return f"স্বাগতম {username}!"
যদি ইউআরএল হয় http://127.0.0.1:5000/profile?username=John, তবে আউটপুট হবে "স্বাগতম John!"।
২. Response Object
Flask-এ Response Object HTTP রেসপন্সের তথ্য ধারণ করে, যেমন কন্টেন্ট (HTML, JSON ইত্যাদি), স্ট্যাটাস কোড, এবং হেডার। Flask অ্যাপ্লিকেশন HTTP রেসপন্স তৈরি করার জন্য response অবজেক্ট ব্যবহার করে।
Response Object তৈরি করা
from flask import Flask, Response
app = Flask(__name__)
@app.route("/text")
def text_response():
return Response("এটি একটি কাস্টম টেক্সট রেসপন্স।", status=200, mimetype="text/plain")
if __name__ == "__main__":
app.run(debug=True)
এখানে:
Responseক্লাসের মাধ্যমে একটি কাস্টম রেসপন্স তৈরি করা হয়েছে, যেখানে রেসপন্সের কনটেন্ট, স্ট্যাটাস কোড, এবং MIME টাইপ নির্ধারণ করা হয়েছে।
Response Object এর সাথে কাজ করা
Response(status=200, mimetype='text/html'): রেসপন্সের স্ট্যাটাস কোড এবং MIME টাইপ সেট করা।response.data: রেসপন্সের কনটেন্টের মূল ডেটা (অর্থাৎ রেসপন্সের পে-লোড)।response.headers: রেসপন্সের হেডার।
উদাহরণ:
@app.route("/json")
def json_response():
response_data = {"message": "এটি একটি JSON রেসপন্স"}
return Response(
response=json.dumps(response_data), # JSON ডেটা
status=200, # স্ট্যাটাস কোড
mimetype="application/json" # MIME টাইপ
)
এখানে, Flask JSON ডেটা রিটার্ন করছে application/json MIME টাইপসহ।
৩. Flask Default Response
Flask-এ আপনি সাধারণভাবে return স্টেটমেন্টের মাধ্যমে রেসপন্স প্রদান করতে পারেন। Flask আপনার রিটার্ন করা ডেটা থেকে একটি Response Object তৈরি করে। উদাহরণস্বরূপ:
@app.route("/welcome")
def welcome():
return "স্বাগতম আমাদের Flask অ্যাপে!"
এটি স্বয়ংক্রিয়ভাবে একটি 200 OK স্ট্যাটাস কোড সহ একটি text/html MIME টাইপের রেসপন্স তৈরি করবে।
৪. Redirect এবং URL Building with Response
Flask-এ আপনি রিডাইরেকশনও করতে পারেন। redirect() ফাংশন এবং url_for() ফাংশন ব্যবহার করে আপনি রিডাইরেক্ট করতে পারেন।
উদাহরণ:
from flask import redirect, url_for
@app.route("/login")
def login():
return redirect(url_for('home')) # রিডাইরেক্ট হোম পেজে
@app.route("/")
def home():
return "স্বাগতম হোমপেজে!"
এখানে:
redirect(): একটি নতুন URL এ রিডাইরেক্ট করে।url_for('home'):homeরাউটের জন্য সঠিক URL তৈরি করে।
৫. Custom Headers এবং Cookies
Flask Response Object এ কাস্টম হেডার এবং কুকি যোগ করতে পারেন।
কাস্টম হেডার:
@app.route("/custom-header")
def custom_header():
response = Response("এটি কাস্টম হেডার সহ রেসপন্স।")
response.headers["X-Custom-Header"] = "কাস্টম মান"
return response
কুকি সেট করা:
@app.route("/set-cookie")
def set_cookie():
response = Response("কুকি সেট করা হয়েছে!")
response.set_cookie("username", "john_doe")
return response
কুকি গ্রহণ করা:
@app.route("/get-cookie")
def get_cookie():
username = request.cookies.get("username")
return f"আপনার কুকি হলো: {username}"
Flask-এ Request এবং Response অবজেক্ট ব্যবহার করা খুবই গুরুত্বপূর্ণ, কারণ এগুলি HTTP রিকোয়েস্ট এবং রেসপন্স সম্পর্কিত সমস্ত তথ্য ধারণ করে এবং অ্যাপ্লিকেশনটির কার্যকারিতা নিয়ন্ত্রণ করে। Flask এর Request Object রিকোয়েস্টের সমস্ত তথ্য সরবরাহ করে, আর Response Object ব্যবহার করে আপনি কাস্টম রেসপন্স তৈরি এবং রিটার্ন করতে পারেন।
Read more