Zend Framework (বর্তমানে Laminas) এর মাধ্যমে API তৈরি করা একটি সাধারণ এবং প্রভাবশালী প্রক্রিয়া। এটি রেস্টফুল API (RESTful API) তৈরি করতে সাহায্য করে, যা সাধারণ HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে তথ্য পরিচালনা করতে পারে। Zend Framework-এ API Endpoints তৈরি করার জন্য আপনাকে কয়েকটি ধাপ অনুসরণ করতে হবে।
এখানে আমরা API Endpoints তৈরি এবং কনফিগারেশন কিভাবে করতে হবে তা বিস্তারিতভাবে আলোচনা করব।
API Endpoints তৈরি করা
API Endpoints তৈরি করার জন্য, প্রথমে Controller এবং Routes কনফিগার করতে হয়, যা বিভিন্ন HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) হ্যান্ডল করবে।
১. Controller তৈরি করা
প্রথমেই একটি নতুন Controller তৈরি করুন যা API এর জন্য কাজ করবে। এই Controller HTTP রিকোয়েস্টের ভিত্তিতে বিভিন্ন অ্যাকশন পরিচালনা করবে।
Controller Example:
<?php
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractRestfulController;
use Laminas\View\Model\JsonModel;
class ApiController extends AbstractRestfulController
{
// GET method for fetching resource
public function getList()
{
$data = [
['id' => 1, 'name' => 'John Doe'],
['id' => 2, 'name' => 'Jane Smith'],
];
return new JsonModel($data);
}
// GET method for fetching a single resource
public function get($id)
{
$data = [
'id' => $id,
'name' => $id == 1 ? 'John Doe' : 'Jane Smith',
];
return new JsonModel($data);
}
// POST method for creating a new resource
public function create($data)
{
// এখানে আপনি ডাটাবেসে নতুন ডেটা ইনসার্ট করবেন
return new JsonModel(['status' => 'success', 'data' => $data]);
}
// PUT method for updating an existing resource
public function update($id, $data)
{
// এখানে আপনি ডাটাবেসে রিসোর্স আপডেট করবেন
return new JsonModel(['status' => 'updated', 'id' => $id, 'data' => $data]);
}
// DELETE method for deleting a resource
public function delete($id)
{
// এখানে আপনি ডাটাবেস থেকে রিসোর্স ডিলিট করবেন
return new JsonModel(['status' => 'deleted', 'id' => $id]);
}
}
এখানে, ApiController একটি AbstractRestfulController-এর সম্প্রসারণ (extension)। এটি কয়েকটি সাধারণ HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) হ্যান্ডল করতে পারে। প্রতিটি HTTP রিকোয়েস্টের জন্য আলাদা আলাদা অ্যাকশন তৈরি করা হয়েছে যেমন:
- getList: GET রিকোয়েস্টের জন্য সব রিসোর্স ফেরত দেয়।
- get: GET রিকোয়েস্টের মাধ্যমে একক রিসোর্স ফেরত দেয়।
- create: POST রিকোয়েস্টের মাধ্যমে নতুন রিসোর্স তৈরি করে।
- update: PUT রিকোয়েস্টের মাধ্যমে রিসোর্স আপডেট করে।
- delete: DELETE রিকোয়েস্টের মাধ্যমে রিসোর্স মুছে দেয়।
Routes কনফিগারেশন
API রুট কনফিগার করতে আপনাকে module.config.php ফাইলে রুট সেটআপ করতে হবে। এখানে আমরা RESTful রুট কনফিগার করব, যা আমাদের Controller এর অ্যাকশনগুলোকে নির্দিষ্ট HTTP মেথডের মাধ্যমে ম্যাপ করবে।
২. Routes কনফিগারেশন
module/Application/config/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[/:id]',
'defaults' => [
'controller' => Controller\ApiController::class,
],
],
],
],
],
'controllers' => [
'factories' => [
Controller\ApiController::class => InvokableFactory::class,
],
],
];
এখানে, Segment রাউট টাইপ ব্যবহার করা হয়েছে যাতে /api রুটের পর একটি অতিরিক্ত ID প্যারামিটার থাকতে পারে। এই রুটটি ApiController কন্ট্রোলারকে হ্যান্ডল করতে বলবে।
/api— GET রিকোয়েস্ট দ্বারা সব রিসোর্স ফেরত পাবে।/api/:id— GET, PUT, DELETE রিকোয়েস্টের জন্য নির্দিষ্ট রিসোর্সের ID গ্রহণ করবে।
JSON রেসপন্স
API থেকে JSON ডাটা রিটার্ন করার জন্য JsonModel ব্যবহার করা হয়। এটি স্বয়ংক্রিয়ভাবে সঠিক Content-Type: application/json হেডার সহ JSON রেসপন্স প্রদান করে।
যেমন:
return new JsonModel([
'id' => 1,
'name' => 'John Doe'
]);
এটি ক্লায়েন্টের কাছে একটি JSON অবজেক্ট হিসেবে রিটার্ন হবে:
{
"id": 1,
"name": "John Doe"
}
API Endpoints টেস্ট করা
API endpoints তৈরি এবং কনফিগার করার পর, আপনি টেস্ট করতে পারেন বিভিন্ন HTTP ক্লায়েন্ট ব্যবহার করে। উদাহরণস্বরূপ, আপনি Postman বা cURL ব্যবহার করে API endpoints টেস্ট করতে পারেন।
১. GET Request টেস্ট করা:
GET /api
curl -X GET http://localhost/api
GET /api/1
curl -X GET http://localhost/api/1
২. POST Request টেস্ট করা:
POST /api
curl -X POST http://localhost/api -d '{"name":"New User"}' -H "Content-Type: application/json"
৩. PUT Request টেস্ট করা:
PUT /api/1
curl -X PUT http://localhost/api/1 -d '{"name":"Updated User"}' -H "Content-Type: application/json"
৪. DELETE Request টেস্ট করা:
DELETE /api/1
curl -X DELETE http://localhost/api/1
সারাংশ
Zend Framework বা Laminas-এ API Endpoints তৈরি করা একটি সহজ প্রক্রিয়া যা RESTful Controller এবং Router কনফিগারেশন ব্যবহার করে সম্পন্ন করা যায়। GET, POST, PUT, এবং DELETE HTTP মেথড ব্যবহার করে API তৈরি করা যায়, যা ডাটা পরিচালনার জন্য উপযুক্ত। JSON রেসপন্স প্রদান করার জন্য JsonModel ব্যবহার করা হয় এবং টেস্টিংয়ের জন্য Postman বা cURL ব্যবহার করা যেতে পারে।
- API Controller তৈরি করে HTTP রিকোয়েস্ট হ্যান্ডল করা হয়।
- Routes কনফিগার করে API endpoints সঠিকভাবে কনফিগার করা হয়।
- JSON রেসপন্স প্রদান করার জন্য JsonModel ব্যবহার করা হয়।
Read more