RESTful Routes এবং API তৈরি

Routing এবং URL Mapping - ফুয়েলপিএইচপি (FuelPHP) - Web Development

307

FuelPHP একটি শক্তিশালী এবং লাইটওয়েট PHP ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচার এবং HMVC (Hierarchical Model-View-Controller) সমর্থন করে। RESTful API তৈরি করতে FuelPHP সহজে রাউটিং এবং কন্ট্রোলার পরিচালনা করার সুবিধা প্রদান করে। আপনি সহজেই FuelPHP ব্যবহার করে RESTful Routes তৈরি করতে এবং API তৈরি করতে পারেন।

FuelPHP এ RESTful Routes এবং API তৈরি করার ধাপসমূহ

FuelPHP তে RESTful API তৈরি করার জন্য মূলত Controller এবং Routes কনফিগারেশন ব্যবহার করা হয়। নিচে FuelPHP তে RESTful Routes এবং API তৈরি করার জন্য প্রক্রিয়া ধাপে ধাপে ব্যাখ্যা করা হলো।

1. FuelPHP এ RESTful Controller তৈরি করা

FuelPHP তে RESTful Controller তৈরি করতে, আপনাকে প্রথমে একটি কন্ট্রোলার তৈরি করতে হবে যা HTTP মেথড (GET, POST, PUT, DELETE) হ্যান্ডেল করবে।

১.১ Controller তৈরি করা:

আপনার API কন্ট্রোলার তৈরি করতে, আপনাকে Controller ক্লাসের মধ্যে HTTP মেথডগুলিকে হ্যান্ডেল করতে হবে।

Example:

ধরা যাক, আমরা একটি Product API তৈরি করছি যেখানে পণ্য সম্পর্কিত CRUD (Create, Read, Update, Delete) অপারেশনগুলি হ্যান্ডেল করা হবে।

<?php

class Controller_Api_Product extends Controller_Rest
{
    protected $format = 'json';  // Response format (JSON)

    // GET method to fetch all products
    public function get_index()
    {
        $products = Model_Product::find_all();  // Model থেকে সব পণ্য খুঁজে পাওয়া
        return $this->response($products);  // JSON আউটপুট হিসেবে রিটার্ন
    }

    // GET method to fetch a specific product by ID
    public function get_item($id)
    {
        $product = Model_Product::find($id);  // নির্দিষ্ট পণ্য খুঁজে পাওয়া
        if ($product) {
            return $this->response($product);  // JSON আউটপুট হিসেবে রিটার্ন
        } else {
            return $this->response(['error' => 'Product not found'], 404);  // Error response
        }
    }

    // POST method to create a new product
    public function post_create()
    {
        $product_data = json_decode(Input::post('data'), true);  // JSON ডাটা ইনপুট হিসেবে
        $product = Model_Product::forge($product_data);  // নতুন পণ্য তৈরি
        if ($product->save()) {
            return $this->response(['message' => 'Product created successfully'], 201);  // Success response
        } else {
            return $this->response(['error' => 'Failed to create product'], 500);  // Error response
        }
    }

    // PUT method to update a product
    public function put_update($id)
    {
        $product_data = json_decode(Input::put('data'), true);  // JSON ডাটা ইনপুট হিসেবে
        $product = Model_Product::find($id);
        if ($product) {
            $product->set($product_data);
            if ($product->save()) {
                return $this->response(['message' => 'Product updated successfully']);
            } else {
                return $this->response(['error' => 'Failed to update product'], 500);
            }
        } else {
            return $this->response(['error' => 'Product not found'], 404);
        }
    }

    // DELETE method to delete a product
    public function delete_item($id)
    {
        $product = Model_Product::find($id);
        if ($product) {
            if ($product->delete()) {
                return $this->response(['message' => 'Product deleted successfully']);
            } else {
                return $this->response(['error' => 'Failed to delete product'], 500);
            }
        } else {
            return $this->response(['error' => 'Product not found'], 404);
        }
    }
}

এখানে, Controller_Api_Product ক্লাসটি RESTful API এর বিভিন্ন HTTP মেথড (GET, POST, PUT, DELETE) হ্যান্ডেল করবে। Controller_Rest ক্লাসটি FuelPHP এর একটি বিল্ট-ইন ক্লাস, যা REST API পরিচালনার জন্য সহায়ক।

  • get_index(): সমস্ত পণ্য দেখানোর জন্য (GET request)
  • get_item($id): একটি নির্দিষ্ট পণ্য দেখানোর জন্য (GET request with ID)
  • post_create(): নতুন পণ্য তৈরি করার জন্য (POST request)
  • put_update($id): পণ্য আপডেট করার জন্য (PUT request)
  • delete_item($id): পণ্য মুছে ফেলার জন্য (DELETE request)

2. FuelPHP তে RESTful Routes কনফিগারেশন

এখন, আমাদের কন্ট্রোলারটি ঠিকভাবে কাজ করার জন্য routes কনফিগারেশন করতে হবে, যা URL routing নির্দেশ করবে। FuelPHP এ রাউটিং কনফিগারেশন app/config/routes.php ফাইলে করা হয়।

২.১ Routes কনফিগারেশন:

// app/config/routes.php

return array(
    '_root_'  => 'welcome/index',  // Default route
    'api/products' => 'api/product/index',  // GET method for fetching all products
    'api/products/(:num)' => 'api/product/item/$1',  // GET method for fetching a specific product by ID
    'api/products/create' => 'api/product/create',  // POST method for creating a new product
    'api/products/(:num)/update' => 'api/product/update/$1',  // PUT method for updating a product
    'api/products/(:num)/delete' => 'api/product/delete_item/$1',  // DELETE method for deleting a product
);

এখানে, api/products রাউটের মাধ্যমে সমস্ত পণ্য GET করা যাবে, api/products/create এর মাধ্যমে নতুন পণ্য POST করা যাবে, এবং অন্যান্য রাউটস HTTP method অনুযায়ী সংযুক্ত করা হয়েছে।

3. FuelPHP তে Model তৈরি করা

FuelPHP-তে API এর সাথে যুক্ত ডেটাবেস ম্যানিপুলেশনের জন্য Model তৈরি করা প্রয়োজন। এখানে একটি সাধারণ Product মডেল তৈরি করা হলো যা ডেটাবেসের পণ্য সম্পর্কিত তথ্য পরিচালনা করবে।

৩.১ Model তৈরি করা:

<?php

class Model_Product extends Orm\Model
{
    protected static $_table_name = 'products';  // ডেটাবেস টেবিলের নাম
    protected static $_properties = array(
        'id',
        'name',
        'price',
        'created_at',
        'updated_at'
    );

    // ইনপুট ডেটা স্যানিটেশন
    public static function forge($data = array())
    {
        $product = parent::forge($data);
        return $product;
    }

    // ফিল্টার করা ডেটার জন্য Getter and Setter method
    public function set_price($value)
    {
        $this->price = floatval($value);
    }

    public function get_price()
    {
        return '$' . number_format($this->price, 2);
    }
}

এখানে Model_Product ক্লাস তৈরি করা হয়েছে যা পণ্য সম্পর্কিত ডেটা products টেবিলের সাথে সংযুক্ত করবে।

4. FuelPHP তে API টেস্ট করা

এখন আপনি FuelPHP RESTful API তৈরি করেছেন এবং এর রাউটিং কনফিগারেশন এবং কন্ট্রোলারগুলি ঠিকভাবে সেটআপ করেছেন। এখন আপনি API টেস্ট করতে পারেন:

  1. GET http://localhost:8000/api/products → সমস্ত পণ্যের তালিকা
  2. GET http://localhost:8000/api/products/1 → পণ্যের ID 1 এর তথ্য
  3. POST http://localhost:8000/api/products/create → নতুন পণ্য তৈরি (JSON ডেটা পাঠান)
  4. PUT http://localhost:8000/api/products/1/update → পণ্য আপডেট (ID 1)
  5. DELETE http://localhost:8000/api/products/1/delete → পণ্য মুছে ফেলা (ID 1)

সারাংশ:

FuelPHP তে RESTful Routes এবং API তৈরি করতে আপনি কন্ট্রোলার এবং রাউটিং কনফিগারেশন ব্যবহার করেন। এখানে RESTful API তৈরি করতে, বিভিন্ন HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করা হয়েছে যা FuelPHP এর মাধ্যমে সহজেই পরিচালিত হয়। এর মাধ্যমে আপনি একটি সহজ এবং কার্যকরী REST API তৈরি করতে পারবেন যা ডাটাবেস ম্যানিপুলেশন এবং বাইরের সিস্টেমের সাথে ইন্টারঅ্যাকশন করতে সক্ষম।

Content added By
Promotion

Are you sure to start over?

Loading...