Zend\Rest\Controller\AbstractRestfulController ব্যবহার করা

RESTful API ডেভেলপমেন্ট - জেন্ড ফ্রেমওয়ার্ক (Zend Framework) - Web Development

275

Zend Framework (এখন Laminas) একটি শক্তিশালী রেস্টফুল অ্যাপ্লিকেশন তৈরির জন্য AbstractRestfulController ক্লাস প্রদান করে, যা আপনাকে রেস্টফুল API তৈরি করতে সাহায্য করে। RESTful (Representational State Transfer) হল একটি জনপ্রিয় আর্কিটেকচার স্টাইল যা HTTP পদ্ধতি (GET, POST, PUT, DELETE) ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান প্রদান করে।

AbstractRestfulController ক্লাসটি Zend Framework (Laminas) এর মধ্যে রেস্ট API নির্মাণে ব্যবহৃত একটি ভিত্তি, যা আপনাকে HTTP রিকোয়েস্টের ভিত্তিতে (যেমন GET, POST, PUT, DELETE) ডেটা পরিচালনা করতে সাহায্য করে।

এটি একটি এ্যাবস্ট্র্যাক্ট ক্লাস, যা আপনার কন্ট্রোলার ক্লাসকে রেস্ট API রিকোয়েস্ট হ্যান্ডলিংয়ের জন্য প্রস্তুত করে। নিচে আমরা এর ব্যবহার দেখব।


AbstractRestfulController এর মৌলিক ধারণা

Zend Framework এ রেস্ট API তৈরি করার জন্য AbstractRestfulController ব্যবহার করা হয়। এই কন্ট্রোলারটি বিশেষ কিছু মেথড প্রদান করে যা HTTP রিকোয়েস্টগুলির সাথে যোগাযোগ করতে সক্ষম।

মুখ্য মেথডগুলো:

  • getList(): HTTP GET (লিস্ট) রিকোয়েস্টের জন্য ব্যবহৃত।
  • get(): HTTP GET (একটি আইটেম) রিকোয়েস্টের জন্য ব্যবহৃত।
  • create(): HTTP POST রিকোয়েস্টের জন্য ব্যবহৃত (নতুন রেকর্ড তৈরি করা)।
  • update(): HTTP PUT রিকোয়েস্টের জন্য ব্যবহৃত (অবস্থিত রেকর্ড আপডেট করা)।
  • delete(): HTTP DELETE রিকোয়েস্টের জন্য ব্যবহৃত (অবস্থিত রেকর্ড মুছে ফেলা)।

এটি সাধারণত ডেটা পরিচালনার জন্য বিশেষভাবে উপযুক্ত যেখানে আপনি একাধিক রেকর্ড বা একক রেকর্ডের উপর CRUD (Create, Read, Update, Delete) অপারেশন করতে চান।


AbstractRestfulController ব্যবহার করে রেস্ট API তৈরি করা

ধরি, আমাদের একটি "Products" রেস্ট API তৈরি করতে হবে, যেখানে প্রোডাক্টের তথ্য (যেমন নাম, দাম, বর্ণনা) রাখা থাকবে। আমরা AbstractRestfulController ক্লাস ব্যবহার করে এই API তৈরি করব।


১. রেস্ট কন্ট্রোলার তৈরি

প্রথমে, আমাদের একটি কন্ট্রোলার তৈরি করতে হবে যা AbstractRestfulController ক্লাস থেকে এক্সটেন্ড করবে।

ফোল্ডার স্ট্রাকচার:

module/Application/src/Controller/Api/ProductController.php

ProductController.php:

<?php
namespace Application\Controller\Api;

use Laminas\Rest\Controller\AbstractRestfulController;
use Laminas\View\Model\JsonModel;

class ProductController extends AbstractRestfulController
{
    // GET /products
    public function getList()
    {
        // প্রোডাক্টের তালিকা ফেচ করা
        $products = [
            ['id' => 1, 'name' => 'Laptop', 'price' => 1000, 'description' => 'High-end laptop'],
            ['id' => 2, 'name' => 'Smartphone', 'price' => 500, 'description' => 'Latest model smartphone']
        ];
        
        return new JsonModel($products);
    }

    // GET /products/{id}
    public function get($id)
    {
        // নির্দিষ্ট প্রোডাক্ট ফেচ করা
        $product = ['id' => $id, 'name' => 'Laptop', 'price' => 1000, 'description' => 'High-end laptop'];
        
        return new JsonModel($product);
    }

    // POST /products
    public function create($data)
    {
        // নতুন প্রোডাক্ট তৈরি
        $newProduct = [
            'id' => 3,
            'name' => $data['name'],
            'price' => $data['price'],
            'description' => $data['description']
        ];

        return new JsonModel($newProduct);
    }

    // PUT /products/{id}
    public function update($id, $data)
    {
        // প্রোডাক্ট আপডেট
        $updatedProduct = [
            'id' => $id,
            'name' => $data['name'],
            'price' => $data['price'],
            'description' => $data['description']
        ];

        return new JsonModel($updatedProduct);
    }

    // DELETE /products/{id}
    public function delete($id)
    {
        // প্রোডাক্ট মুছে ফেলা
        return new JsonModel(['message' => 'Product deleted']);
    }
}

এখানে আমরা ProductController কন্ট্রোলার তৈরি করেছি যা AbstractRestfulController থেকে এক্সটেন্ড করছে। এই কন্ট্রোলারে আমরা পাঁচটি মেথড ডিফাইন করেছি:

  1. getList(): সমস্ত প্রোডাক্টের তালিকা ফেরত দেয়।
  2. get($id): একটি নির্দিষ্ট প্রোডাক্টের বিস্তারিত ফেরত দেয়।
  3. create($data): একটি নতুন প্রোডাক্ট তৈরি করে।
  4. update($id, $data): একটি নির্দিষ্ট প্রোডাক্ট আপডেট করে।
  5. delete($id): একটি প্রোডাক্ট মুছে ফেলে।

২. রাউটিং কনফিগারেশন

এখন আমাদের কন্ট্রোলারকে রাউট করতে হবে যাতে API রিকোয়েস্টগুলো সঠিকভাবে পৌঁছায়। এজন্য module.config.php ফাইল এ রাউট কনফিগারেশন করা হবে।

module.config.php:

<?php
namespace Application;

use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;

return [
    'router' => [
        'routes' => [
            'api' => [
                'type'    => Segment::class,
                'options' => [
                    'route'    => '/api[/:controller[/:id]]',
                    'defaults' => [
                        'controller' => 'Application\Controller\Api\Product',
                    ],
                ],
            ],
        ],
    ],
    'controllers' => [
        'invokables' => [
            'Application\Controller\Api\Product' => 'Application\Controller\Api\ProductController',
        ],
    ],
];

এখানে, আমরা একটি রাউট ডিফাইন করেছি যেটি /api/product রিকোয়েস্টের জন্য ProductController কন্ট্রোলারটি ব্যবহার করবে। /api/product/{id} এর মাধ্যমে একক প্রোডাক্টের তথ্যও দেখা যাবে।


৩. রেস্ট API টেস্ট করা

এখন আপনি API রিকোয়েস্টের মাধ্যমে আপনার রেস্ট API টেস্ট করতে পারবেন। উদাহরণস্বরূপ, আপনি Postman অথবা cURL ব্যবহার করে API রিকোয়েস্ট করতে পারেন।

GET রিকোয়েস্ট (সমস্ত প্রোডাক্টের তালিকা):

GET /api/products

GET রিকোয়েস্ট (একটি প্রোডাক্ট):

GET /api/products/1

POST রিকোয়েস্ট (নতুন প্রোডাক্ট তৈরি):

POST /api/products
{
    "name": "Tablet",
    "price": 400,
    "description": "Affordable tablet"
}

PUT রিকোয়েস্ট (প্রোডাক্ট আপডেট):

PUT /api/products/1
{
    "name": "Laptop",
    "price": 1200,
    "description": "Updated high-end laptop"
}

DELETE রিকোয়েস্ট (প্রোডাক্ট মুছে ফেলা):

DELETE /api/products/1

সারাংশ

Zend Framework (Laminas) এর AbstractRestfulController ক্লাস রেস্ট API তৈরি করার জন্য খুবই কার্যকরী। এটি HTTP পদ্ধতি (GET, POST, PUT, DELETE) অনুযায়ী API রিকোয়েস্টের জন্য পূর্বনির্ধারিত মেথড প্রদান করে, যা ডেভেলপারদের দ্রুত এবং সহজে রেস্টফুল API তৈরি করতে সহায়তা করে। AbstractRestfulController ব্যবহার করার মাধ্যমে, আপনি আপনার অ্যাপ্লিকেশনটি মডুলার এবং পরিষ্কারভাবে তৈরি করতে পারেন, যা API ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত উপযোগী।

Content added By
Promotion

Are you sure to start over?

Loading...