API Routes এবং Controller Actions

API ডেভেলপমেন্ট (REST এবং SOAP) - কেকপিএইচপি (CakePHP) - Web Development

240

CakePHP তে API Routes এবং Controller Actions ব্যবহারের মাধ্যমে আপনি RESTful API তৈরি করতে পারেন, যা ক্লায়েন্ট (যেমন মোবাইল অ্যাপ্লিকেশন বা ওয়েব ফ্রন্টএন্ড) থেকে ডেটা এক্সেস এবং ম্যানিপুলেট করতে সাহায্য করে। API Routes এবং Controller Actions দিয়ে আপনি HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) প্রোসেস করতে পারেন এবং JSON অথবা XML ফরম্যাটে রেসপন্স পাঠাতে পারেন।


API Routes কনফিগারেশন

CakePHP তে API রুট কনফিগার করার জন্য, আপনি সাধারণত config/routes.php ফাইল ব্যবহার করেন। API রুটগুলি সাধারণত একটি নির্দিষ্ট প্রিফিক্স দিয়ে শুরু হয়, যেমন api/ বা /v1/। এইভাবে আপনি API রিকোয়েস্টগুলোকে আলাদা করে পরিচালনা করতে পারেন।

API Routes তৈরি করা

  1. Routes ফাইল কনফিগার করা:

CakePHP তে API রাউট তৈরি করার জন্য, আপনাকে প্রথমে config/routes.php ফাইলে নতুন রাউটগুলো কনফিগার করতে হবে। উদাহরণস্বরূপ:

use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;

Router::prefix('api', function (RouteBuilder $routes) {
    // API কন্ট্রোলার অ্যাকশনসমূহ
    $routes->connect('/articles', ['controller' => 'Articles', 'action' => 'index']);
    $routes->connect('/articles/:id', ['controller' => 'Articles', 'action' => 'view'])
        ->setPatterns(['id' => '\d+'])
        ->setMethods(['GET']);
    $routes->connect('/articles', ['controller' => 'Articles', 'action' => 'add'])
        ->setMethods(['POST']);
    $routes->connect('/articles/:id', ['controller' => 'Articles', 'action' => 'edit'])
        ->setPatterns(['id' => '\d+'])
        ->setMethods(['PUT', 'PATCH']);
    $routes->connect('/articles/:id', ['controller' => 'Articles', 'action' => 'delete'])
        ->setPatterns(['id' => '\d+'])
        ->setMethods(['DELETE']);
});

এখানে, api প্রিফিক্সের মাধ্যমে রুটগুলো কনফিগার করা হয়েছে এবং বিভিন্ন HTTP মেথডের সাথে কন্ট্রোলার অ্যাকশন মেলানো হয়েছে।

  • /api/articles: এই রুটটি সমস্ত আর্টিকেল ডেটা GET রিকোয়েস্টে ফিরিয়ে দেবে।
  • /api/articles/:id: একটি নির্দিষ্ট আর্টিকেল প্রদর্শন করার জন্য।
  • /api/articles: একটি নতুন আর্টিকেল তৈরি করার জন্য (POST রিকোয়েস্ট)।
  • /api/articles/:id: একটি আর্টিকেল আপডেট করার জন্য (PUT/PATCH রিকোয়েস্ট)।
  • /api/articles/:id: একটি আর্টিকেল মুছে ফেলার জন্য (DELETE রিকোয়েস্ট)।

Controller Actions

CakePHP তে API কন্ট্রোলারের অ্যাকশনগুলি সাধারণ কন্ট্রোলারের মতো কাজ করে, তবে এই অ্যাকশনগুলির উদ্দেশ্য হচ্ছে API রিকোয়েস্টগুলিকে সঠিকভাবে প্রোসেস করে, প্রয়োজনীয় ডেটা ফেচ করা এবং একটি JSON বা XML রেসপন্স পাঠানো।

Controller Action তৈরি করা

ধরা যাক, আমাদের একটি ArticlesController রয়েছে যেখানে আমরা API এর বিভিন্ন রিকোয়েস্ট হ্যান্ডেল করতে চাই।

  1. ArticlesController.php:
namespace App\Controller\Api;

use App\Controller\AppController;
use Cake\Event\EventInterface;

class ArticlesController extends AppController
{
    public function initialize(): void
    {
        parent::initialize();
        $this->loadModel('Articles');  // Articles মডেল লোড করা
    }

    // সমস্ত আর্টিকেল লিস্ট দেখানোর অ্যাকশন
    public function index()
    {
        $articles = $this->Articles->find('all');
        $this->set([
            'articles' => $articles,
            '_serialize' => ['articles']  // JSON ফরম্যাটে রেসপন্স
        ]);
    }

    // একটি আর্টিকেল দেখা
    public function view($id)
    {
        $article = $this->Articles->get($id);
        $this->set([
            'article' => $article,
            '_serialize' => ['article']
        ]);
    }

    // নতুন আর্টিকেল যোগ করা
    public function add()
    {
        $article = $this->Articles->newEntity();
        if ($this->request->is('post')) {
            $article = $this->Articles->patchEntity($article, $this->request->getData());
            if ($this->Articles->save($article)) {
                $this->set([
                    'article' => $article,
                    '_serialize' => ['article']
                ]);
                $this->response->withStatus(201);  // HTTP স্ট্যাটাস কোড 201 (Created)
            } else {
                $this->set([
                    'error' => 'Unable to add article',
                    '_serialize' => ['error']
                ]);
                $this->response->withStatus(400);  // HTTP স্ট্যাটাস কোড 400 (Bad Request)
            }
        }
    }

    // আর্টিকেল আপডেট করা
    public function edit($id)
    {
        $article = $this->Articles->get($id);
        if ($this->request->is(['put', 'patch'])) {
            $article = $this->Articles->patchEntity($article, $this->request->getData());
            if ($this->Articles->save($article)) {
                $this->set([
                    'article' => $article,
                    '_serialize' => ['article']
                ]);
            } else {
                $this->set([
                    'error' => 'Unable to update article',
                    '_serialize' => ['error']
                ]);
            }
        }
    }

    // আর্টিকেল মুছে ফেলা
    public function delete($id)
    {
        $article = $this->Articles->get($id);
        if ($this->Articles->delete($article)) {
            $this->set([
                'message' => 'Article deleted',
                '_serialize' => ['message']
            ]);
        } else {
            $this->set([
                'error' => 'Unable to delete article',
                '_serialize' => ['error']
            ]);
        }
    }
}

Controller Action এর ব্যাখ্যা

  1. index():
    • সমস্ত আর্টিকেল ফেচ করে JSON ফরম্যাটে রেসপন্স পাঠাবে।
    • $this->set(['articles' => $articles, '_serialize' => ['articles']]); ব্যবহার করে ডেটা এবং JSON সেরিয়ালাইজেশন করা হয়েছে।
  2. view($id):
    • নির্দিষ্ট একটি আর্টিকেল ফেচ করে দেখাবে।
    • $this->set(['article' => $article, '_serialize' => ['article']]);
  3. add():
    • নতুন আর্টিকেল তৈরি করার জন্য POST রিকোয়েস্ট হ্যান্ডেল করবে।
    • সফল হলে HTTP স্ট্যাটাস কোড 201 Created সেট করা হয়েছে।
  4. edit($id):
    • একটি আর্টিকেল আপডেট করার জন্য PUT/PATCH রিকোয়েস্ট হ্যান্ডেল করবে।
  5. delete($id):
    • একটি আর্টিকেল ডিলিট করার জন্য DELETE রিকোয়েস্ট হ্যান্ডেল করবে।

Response Format (JSON)

CakePHP তে আপনি API থেকে JSON রেসপন্স পাঠাতে চাইলে, '_serialize' => ['key'] ব্যবহার করে অ্যারে বা অবজেক্টকে সেরিয়ালাইজ করতে হবে। এই সেটিংটি JSON আউটপুট তৈরি করতে ব্যবহৃত হয়। আপনি যদি JSON ফরম্যাটে ডেটা পাঠাতে চান, তবে HTTP রেসপন্সের হেডারও ঠিকমতো সেট করা উচিত:

$this->response = $this->response->withType('application/json');

CakePHP তে API Routes এবং Controller Actions ব্যবহার করে RESTful API তৈরি করা অত্যন্ত সহজ। API রাউট কনফিগার করে আপনি নির্দিষ্ট HTTP মেথডের মাধ্যমে ডেটা ম্যানিপুলেট করতে পারেন এবং কন্ট্রোলারের অ্যাকশন ব্যবহার করে ডেটা প্রোসেস করতে পারেন। JSON ফরম্যাটে রেসপন্স ফিরিয়ে, API ক্লায়েন্টদের জন্য সহজতর ডেটা এক্সচেঞ্জ নিশ্চিত করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...