Flask/Django এর মাধ্যমে API তৈরি

Model Deployment এবং API Integration - থিয়ানো (Theano) - Machine Learning

332

Flask এবং Django হল দুটি জনপ্রিয় Python ওয়েব ফ্রেমওয়ার্ক, যা API তৈরি করার জন্য ব্যবহৃত হয়। Flask একটি মাইক্রোফ্রেমওয়ার্ক এবং Django একটি পূর্ণাঙ্গ ফ্রেমওয়ার্ক, যার মাধ্যমে সহজে RESTful API তৈরি করা যায়। নিচে Flask এবং Django দিয়ে API তৈরি করার প্রক্রিয়া তুলে ধরা হলো।

Flask দিয়ে API তৈরি:

Flask একটি লাইটওয়েট এবং মিনিমালিস্ট ওয়েব ফ্রেমওয়ার্ক, যা API তৈরি করতে সহজ এবং দ্রুত।

ধাপ ১: Flask ইনস্টল করা

প্রথমে Flask ইনস্টল করতে হবে। আপনি pip ব্যবহার করে এটি ইনস্টল করতে পারেন:

pip install Flask

ধাপ ২: Flask API তৈরি করা

এখন, একটি সিম্পল RESTful API তৈরি করতে নিচের কোডটি ব্যবহার করুন:

from flask import Flask, jsonify, request

app = Flask(__name__)

# Sample data
tasks = [
    {
        'id': 1,
        'title': 'Learn Python',
        'done': False
    },
    {
        'id': 2,
        'title': 'Build an API',
        'done': True
    }
]

# Home route
@app.route('/')
def home():
    return "Welcome to Flask API!"

# GET method to retrieve tasks
@app.route('/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

# GET method to retrieve a single task
@app.route('/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id):
    task = [task for task in tasks if task['id'] == task_id]
    if len(task) == 0:
        return jsonify({'error': 'Task not found'}), 404
    return jsonify({'task': task[0]})

# POST method to add a new task
@app.route('/tasks', methods=['POST'])
def add_task():
    task_data = request.get_json()
    new_task = {
        'id': len(tasks) + 1,
        'title': task_data['title'],
        'done': task_data['done']
    }
    tasks.append(new_task)
    return jsonify({'task': new_task}), 201

# PUT method to update a task
@app.route('/tasks/<int:task_id>', methods=['PUT'])
def update_task(task_id):
    task = [task for task in tasks if task['id'] == task_id]
    if len(task) == 0:
        return jsonify({'error': 'Task not found'}), 404
    task_data = request.get_json()
    task[0]['title'] = task_data['title']
    task[0]['done'] = task_data['done']
    return jsonify({'task': task[0]})

# DELETE method to remove a task
@app.route('/tasks/<int:task_id>', methods=['DELETE'])
def delete_task(task_id):
    task = [task for task in tasks if task['id'] == task_id]
    if len(task) == 0:
        return jsonify({'error': 'Task not found'}), 404
    tasks.remove(task[0])
    return jsonify({'message': 'Task deleted'}), 200

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

ধাপ ৩: API চালানো

কোডটি লিখে python app.py চালিয়ে Flask API শুরু করুন। এটি ডিফল্টভাবে http://127.0.0.1:5000 এ চলবে।

  • GET /tasks — সমস্ত টাস্ক দেখাবে।
  • GET /tasks/<task_id> — নির্দিষ্ট টাস্কের তথ্য দেখাবে।
  • POST /tasks — একটি নতুন টাস্ক তৈরি করবে।
  • PUT /tasks/<task_id> — একটি টাস্ক আপডেট করবে।
  • DELETE /tasks/<task_id> — একটি টাস্ক মুছে ফেলবে।

Django দিয়ে API তৈরি:

Django একটি পূর্ণাঙ্গ ফ্রেমওয়ার্ক যা শক্তিশালী এবং স্কেলেবল ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহৃত হয়। Django REST Framework (DRF) Django-এর জন্য একটি শক্তিশালী লাইব্রেরি যা API তৈরি করতে ব্যবহৃত হয়।

ধাপ ১: Django এবং Django REST Framework ইনস্টল করা

Django এবং Django REST Framework ইনস্টল করতে নিচের কমান্ডটি ব্যবহার করুন:

pip install django
pip install djangorestframework

ধাপ ২: Django প্রজেক্ট তৈরি করা

  1. Django প্রজেক্ট তৈরি করুন:

    django-admin startproject myproject
    cd myproject
    
  2. একটি অ্যাপ তৈরি করুন:

    python manage.py startapp myapi
    
  3. REST Framework অ্যাপ অ্যাড করুন:

    আপনার myproject/settings.py ফাইলে INSTALLED_APPSrest_framework এবং myapi অ্যাপ যুক্ত করুন:

    INSTALLED_APPS = [
        ...,
        'rest_framework',
        'myapi',
    ]
    

ধাপ ৩: Django REST Framework সেটআপ

  1. Models তৈরি করুন (myapi/models.py):

    from django.db import models
    
    class Task(models.Model):
        title = models.CharField(max_length=100)
        done = models.BooleanField(default=False)
    
        def __str__(self):
            return self.title
    
  2. Serializers তৈরি করুন (myapi/serializers.py):

    from rest_framework import serializers
    from .models import Task
    
    class TaskSerializer(serializers.ModelSerializer):
        class Meta:
            model = Task
            fields = ['id', 'title', 'done']
    
  3. Views তৈরি করুন (myapi/views.py):

    from rest_framework import viewsets
    from .models import Task
    from .serializers import TaskSerializer
    
    class TaskViewSet(viewsets.ModelViewSet):
        queryset = Task.objects.all()
        serializer_class = TaskSerializer
    
  4. URL Routing (myapi/urls.py):

    from django.urls import path, include
    from rest_framework.routers import DefaultRouter
    from .views import TaskViewSet
    
    router = DefaultRouter()
    router.register(r'tasks', TaskViewSet)
    
    urlpatterns = [
        path('api/', include(router.urls)),
    ]
    
  5. প্রোজেক্টের মূল URLs (myproject/urls.py):

    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('api/', include('myapi.urls')),
    ]
    

ধাপ ৪: মাইগ্রেশন এবং API চালানো

  1. মাইগ্রেশন চালান:

    python manage.py makemigrations
    python manage.py migrate
    
  2. ডিজিটাল সার্ভার চালান:

    python manage.py runserver
    

এখন আপনি http://127.0.0.1:8000/api/tasks/ এ আপনার API অ্যাক্সেস করতে পারবেন।


সারাংশ:

  • Flask: Flask একটি মাইক্রোফ্রেমওয়ার্ক যা API তৈরি করার জন্য খুবই লাইটওয়েট এবং সহজ। Flask এর মাধ্যমে সিম্পল API দ্রুত তৈরি করা সম্ভব।
  • Django: Django একটি পূর্ণাঙ্গ ফ্রেমওয়ার্ক, এবং Django REST Framework (DRF) ব্যবহার করে শক্তিশালী, স্কেলেবল API তৈরি করা যায়। এটি আরও বেশি ফিচার যেমন authentication, permissions, এবং viewsets প্রদান করে।

আপনি আপনার প্রয়োজন অনুযায়ী Flask বা Django যেকোনো একটি ব্যবহার করতে পারেন, তবে যদি আপনি একটি পূর্ণাঙ্গ অ্যাপ্লিকেশন চান যেখানে বিভিন্ন ফিচার এবং স্কেলেবিলিটি থাকতে হয়, তবে Django একটি ভালো পছন্দ। Flask সহজ এবং ছোট প্রকল্পের জন্য উপযুক্ত।

Content added By
Promotion

Are you sure to start over?

Loading...