Flask-RESTful ব্যবহার করে API Endpoint তৈরি

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

278

Flask-RESTful হল Flask এর জন্য একটি এক্সটেনশন যা সহজে RESTful API তৈরি করতে সহায়ক। Flask-RESTful আপনাকে HTTP রিকোয়েস্টগুলো পরিচালনা করার জন্য সহজ পদ্ধতি প্রদান করে এবং ডেটা প্রদানের জন্য JSON ফর্ম্যাট ব্যবহার করে।

এখানে Flask-RESTful ব্যবহার করে API Endpoint তৈরি করার প্রক্রিয়া ব্যাখ্যা করা হলো।


১. Flask-RESTful ইনস্টলেশন

প্রথমে, Flask-RESTful ইনস্টল করতে হবে:

pip install flask-restful

২. Flask-RESTful ব্যবহার করে API Endpoint তৈরি করা

ধাপ ১: Flask অ্যাপ সেটআপ

from flask import Flask
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)
  • Flask: Flask অ্যাপ্লিকেশন তৈরি করে।
  • Api: Flask-RESTful এর Api ক্লাস API রাউট এবং রিসোর্স পরিচালনা করে।
  • Resource: Flask-RESTful এর Resource ক্লাস ব্যবহার করে আপনি HTTP রিকোয়েস্ট হ্যান্ডলিং ফাংশন তৈরি করতে পারেন।

ধাপ ২: Resource ক্লাস তৈরি করা

Flask-RESTful এর Resource ক্লাস ব্যবহার করে API endpoint তৈরি করা হয়। প্রতিটি রিসোর্স HTTP মেথড (GET, POST, PUT, DELETE) হ্যান্ডল করার জন্য ফাংশন থাকতে পারে।

class HelloWorld(Resource):
    def get(self):
        return {'message': 'Hello, World!'}

এখানে:

  • get(): এটি GET রিকোয়েস্ট হ্যান্ডল করবে এবং একটি JSON রেসপন্স ফিরিয়ে দিবে। { 'message': 'Hello, World!' }

ধাপ ৩: API Endpoint যোগ করা

API endpoint যোগ করার জন্য api.add_resource() মেথড ব্যবহার করা হয়:

api.add_resource(HelloWorld, '/')

এটি HelloWorld রিসোর্সকে / রুটে মাপা করবে। এখন, এই API তে GET রিকোয়েস্ট করলে { 'message': 'Hello, World!' } রেসপন্স পাওয়া যাবে।

ধাপ ৪: অ্যাপ চালানো

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

এটি Flask অ্যাপ চালু করবে এবং http://127.0.0.1:5000/ URL এ API রেসপন্স পাওয়া যাবে।


৩. Multiple API Endpoints

একাধিক API endpoint তৈরি করার জন্য একাধিক Resource ক্লাস ব্যবহার করা যায়। এখানে দুইটি আলাদা endpoint তৈরি করা হলো:

class HelloWorld(Resource):
    def get(self):
        return {'message': 'Hello, World!'}

class GreetUser(Resource):
    def get(self, username):
        return {'message': f'Hello, {username}!'}

api.add_resource(HelloWorld, '/')
api.add_resource(GreetUser, '/greet/<string:username>')

এখানে:

  • /: HelloWorld রিসোর্সের জন্য GET রিকোয়েস্ট হ্যান্ডল করবে।
  • /greet/<string:username>: GreetUser রিসোর্সের জন্য ডাইনামিক username প্যারামিটার গ্রহণ করবে এবং রেসপন্সে ব্যবহারকারীর নাম দেখাবে।

উদাহরণ:

  • http://127.0.0.1:5000/greet/john
    • রেসপন্স: { "message": "Hello, john!" }

৪. POST, PUT, DELETE মেথড হ্যান্ডলিং

Flask-RESTful এ POST, PUT, DELETE মেথডও খুব সহজে হ্যান্ডল করা যায়। প্রতিটি HTTP মেথডের জন্য একটি ফাংশন তৈরি করা হয়।

উদাহরণ:

class Item(Resource):
    items = {}

    def get(self, name):
        if name in self.items:
            return {name: self.items[name]}
        return {'message': 'Item not found'}, 404

    def post(self, name):
        self.items[name] = f"Details about {name}"
        return {name: self.items[name]}, 201

    def put(self, name):
        self.items[name] = f"Updated details about {name}"
        return {name: self.items[name]}

    def delete(self, name):
        if name in self.items:
            del self.items[name]
            return {'message': f'{name} deleted'}
        return {'message': 'Item not found'}, 404

api.add_resource(Item, '/item/<string:name>')

এখানে:

  • GET: name নামে একটি আইটেম পেলে তা রিটার্ন করবে।
  • POST: একটি নতুন আইটেম তৈরি করবে এবং তাকে name দিয়ে যুক্ত করবে।
  • PUT: একটি বিদ্যমান আইটেম আপডেট করবে।
  • DELETE: একটি আইটেম মুছে ফেলবে।

টেস্ট:

  • http://127.0.0.1:5000/item/laptop URL দিয়ে GET, POST, PUT, DELETE রিকোয়েস্ট পাঠানো যেতে পারে।

৫. Request and Input Validation

Flask-RESTful-এ ইনপুট ভ্যালিডেশন করা খুবই সহজ। আপনি reqparse ব্যবহার করে ইনপুট প্যারামিটার ভ্যালিডেট করতে পারেন।

উদাহরণ:

from flask_restful import reqparse

parser = reqparse.RequestParser()
parser.add_argument('name', type=str, required=True, help="Name cannot be blank")
parser.add_argument('price', type=float, required=True, help="Price cannot be blank")

class Product(Resource):
    def post(self):
        args = parser.parse_args()
        return {'name': args['name'], 'price': args['price']}, 201

api.add_resource(Product, '/product')

এখানে:

  • reqparse এর মাধ্যমে name এবং price প্যারামিটারগুলো যাচাই করা হচ্ছে। যদি এটি না পাওয়া যায়, তবে একটি ত্রুটি বার্তা ফিরিয়ে দেওয়া হবে।

৬. JSON রেসপন্স এবং Error Handling

Flask-RESTful আপনাকে সহজে JSON রেসপন্স এবং Error Handling পরিচালনা করার সুযোগ দেয়। আপনি abort() ফাংশন ব্যবহার করে রিকোয়েস্টে ত্রুটি ঘটালে তা হ্যান্ডেল করতে পারেন।

from flask_restful import abort

class Item(Resource):
    def get(self, name):
        if name not in self.items:
            abort(404, message="Item not found")
        return {name: self.items[name]}

এখানে, যদি আইটেম না পাওয়া যায়, তবে abort() ফাংশন 404 ত্রুটি বার্তা সহ ফিরিয়ে দেবে।


Flask-RESTful এর মাধ্যমে সহজেই API Endpoint তৈরি করা যায়, যা RESTful API ডিজাইনকে দ্রুত এবং কার্যকর করে তোলে। আপনি HTTP মেথড (GET, POST, PUT, DELETE) হ্যান্ডলিং, ডাইনামিক URL, ইনপুট ভ্যালিডেশন এবং ত্রুটি হ্যান্ডলিংসহ সম্পূর্ণ একটি API তৈরি করতে পারেন। Flask-RESTful এর সাহায্যে ছোট থেকে মাঝারি আকারের API খুব দ্রুত এবং কার্যকরভাবে তৈরি করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...