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/laptopURL দিয়ে 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 খুব দ্রুত এবং কার্যকরভাবে তৈরি করা সম্ভব।
Read more