JSON Response এবং Error Handling

Flask এবং API Development - ফ্লাস্ক (Flask) - Web Development

244

Flask অ্যাপ্লিকেশন তৈরির সময় JSON Response এবং Error Handling ব্যবস্থাপনাটি অত্যন্ত গুরুত্বপূর্ণ, বিশেষত যখন আপনি API তৈরি করছেন। Flask অ্যাপ্লিকেশনে ডেটা প্রেরণ এবং ত্রুটি (error) হ্যান্ডলিংয়ের জন্য নির্দিষ্ট পদ্ধতি এবং টুলস রয়েছে, যা আপনার অ্যাপ্লিকেশনকে আরও কার্যকরী এবং ব্যবহারকারীর জন্য উপযুক্ত করে তোলে।


১. Flask JSON Response

Flask অ্যাপ্লিকেশনে JSON ফর্ম্যাটে ডেটা রেসপন্স পাঠানো খুব সহজ। Flask-এ jsonify() ফাংশন ব্যবহৃত হয় JSON রেসপন্স তৈরির জন্য, যা একটি ডিকশনারি বা অন্যান্য ডেটা স্ট্রাকচারকে সঠিকভাবে JSON আউটপুটে রূপান্তর করে।

উদাহরণ: JSON Response পাঠানো

from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/api/data")
def get_data():
    data = {
        "name": "Flask",
        "version": "2.0",
        "status": "active"
    }
    return jsonify(data)  # jsonify() ফাংশন ব্যবহার করে JSON রেসপন্স পাঠানো

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • jsonify(): এই ফাংশন Flask অ্যাপ্লিকেশনকে একটি ডিকশনারি (বা লিস্ট) কে JSON ফর্ম্যাটে রূপান্তরিত করে রেসপন্স হিসেবে ফেরত পাঠায়।
  • /api/data URL এ গেলে একটি JSON রেসপন্স পাওয়া যাবে:

    {
        "name": "Flask",
        "version": "2.0",
        "status": "active"
    }
    

JSON Response-এ HTTP Status Code সেট করা

আপনি JSON রেসপন্সের সাথে HTTP Status Code নির্ধারণ করতে পারেন:

@app.route("/api/success")
def success():
    data = {
        "message": "Request was successful"
    }
    return jsonify(data), 200  # 200 OK status code সহ রেসপন্স

এখানে:

  • 200: এটি HTTP স্ট্যাটাস কোড যা সফল রিকোয়েস্ট নির্দেশ করে।

২. Error Handling in Flask

Flask-এ Error Handling এমন একটি গুরুত্বপূর্ণ বিষয় যা অ্যাপ্লিকেশনের ত্রুটি সমূহ (যেমন 404 বা 500 ত্রুটি) যথাযথভাবে পরিচালনা করতে সাহায্য করে। Flask আপনাকে বিভিন্ন ধরনের ত্রুটির জন্য কাস্টম হ্যান্ডলার তৈরি করতে দেয়।

২.১ 404 Error (Page Not Found) Handling

আপনি কাস্টম 404 ত্রুটি হ্যান্ডলার তৈরি করতে পারেন, যাতে ব্যবহারকারী যদি কোনো অবৈধ URL অ্যাক্সেস করে তবে একটি কাস্টম মেসেজ বা পৃষ্ঠা দেখানো হয়।

@app.errorhandler(404)
def page_not_found(error):
    return jsonify({"error": "Page not found"}), 404

এখানে:

  • @app.errorhandler(404): এটি 404 ত্রুটি (যখন পৃষ্ঠা পাওয়া যায় না) হ্যান্ডল করতে ব্যবহৃত হয়।
  • jsonify(): এটি কাস্টম JSON রেসপন্স তৈরি করে, যেখানে "Page not found" মেসেজটি পাঠানো হয়।

২.২ 500 Error (Internal Server Error) Handling

Flask 500 ত্রুটি (যেমন সার্ভার ভুল) কাস্টমভাবে হ্যান্ডল করতে পারেন:

@app.errorhandler(500)
def internal_error(error):
    return jsonify({"error": "Internal server error"}), 500

এখানে:

  • @app.errorhandler(500): এটি 500 ত্রুটি হ্যান্ডল করতে ব্যবহৃত হয়, যা সাধারণত সার্ভারের অভ্যন্তরীণ ত্রুটি নির্দেশ করে।

২.৩ Custom Error Responses with JSON

আপনি কাস্টম ত্রুটি রেসপন্সও তৈরি করতে পারেন, যেমন 403 (Forbidden) বা 401 (Unauthorized) এর জন্য:

@app.errorhandler(403)
def forbidden_error(error):
    return jsonify({"error": "Forbidden, you don't have permission"}), 403

@app.errorhandler(401)
def unauthorized_error(error):
    return jsonify({"error": "Unauthorized, please login first"}), 401

এখানে:

  • 403: এটি নিষিদ্ধ (Forbidden) ত্রুটি নির্দেশ করে।
  • 401: এটি অনুমোদনহীন (Unauthorized) ত্রুটি নির্দেশ করে।

৩. Flask-এ Custom Error Messages

কখনো কখনো আপনি নির্দিষ্ট ত্রুটির জন্য কাস্টম মেসেজ বা কাস্টম ফিল্ড পাঠাতে চাইতে পারেন। আপনি এমনকি স্ট্যাটাস কোড, ডেটা, এবং মেসেজ সহ JSON রেসপন্স তৈরি করতে পারেন।

from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/api/not_found")
def not_found():
    return jsonify({
        "status": "error",
        "message": "The resource you requested could not be found"
    }), 404  # 404 status code with custom error message

@app.route("/api/unauthorized")
def unauthorized():
    return jsonify({
        "status": "error",
        "message": "You need to log in to access this resource"
    }), 401  # 401 status code with custom error message

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • 404 এবং 401 ত্রুটির জন্য কাস্টম মেসেজ এবং JSON ফর্ম্যাটে রেসপন্স দেওয়া হয়েছে।

৪. Flask Debug Mode এবং Error Handling

Flask-এ Debug Mode সক্রিয় থাকলে আপনি ত্রুটির স্ট্যাক ট্রেস দেখতে পারবেন যা ডেভেলপমেন্টের জন্য সহায়ক। এটি কেবল ডেভেলপমেন্ট পরিবেশে ব্যবহৃত উচিত, কারণ প্রোডাকশনে এটি নিরাপত্তার জন্য অনিরাপদ হতে পারে।

if __name__ == "__main__":
    app.run(debug=True)  # Debug mode সক্রিয়

এখন, যদি কোন ত্রুটি ঘটে, Flask তা টার্মিনালে দেখাবে এবং আপনি কোডের কোথায় ত্রুটি ঘটেছে তা দেখতে পারবেন।


৫. Flask API Error Handling with JSON

Flask অ্যাপ্লিকেশনে API তৈরি করার সময় ত্রুটি হ্যান্ডলিং একটি গুরুত্বপূর্ণ অংশ, বিশেষত যখন ক্লায়েন্ট JSON রেসপন্স আশা করে। এ জন্য আপনি কাস্টম JSON error রেসপন্স তৈরি করতে পারেন।

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route("/api/resource", methods=["POST"])
def create_resource():
    if not request.json:
        return jsonify({
            "status": "error",
            "message": "Bad request, JSON data expected"
        }), 400  # 400 Bad Request
    
    data = request.get_json()  # JSON ডেটা প্রাপ্তি
    return jsonify({
        "status": "success",
        "data": data
    }), 201  # 201 Created

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • 400 (Bad Request): যদি ক্লায়েন্ট সঠিক JSON ডেটা না পাঠায়, তবে আমরা একটি কাস্টম JSON ত্রুটি রেসপন্স ফিরিয়ে দিচ্ছি।

Flask-এ JSON Response এবং Error Handling ব্যবহার করে আপনি সহজেই API বা ওয়েব অ্যাপ্লিকেশনে ত্রুটি পরিচালনা করতে পারেন এবং সঠিক রেসপন্স প্রদান করতে পারেন। jsonify() ফাংশন এবং errorhandler ডেকোরেটর ব্যবহার করে আপনি কাস্টম ত্রুটি মেসেজ এবং JSON রেসপন্স তৈরি করতে পারেন, যা ডেভেলপারদের জন্য ডিবাগ এবং ব্যবহারকারীদের জন্য পরিষ্কার মেসেজ প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...