CodeIgniter এর RESTful API তৈরি

Web Development - কোডইগনাইটার (Codeigniter) -

RESTful API (Representational State Transfer API) হল একটি স্থিতিশীল এবং কার্যকরী পদ্ধতি, যা HTTP প্রটোকল ব্যবহার করে ডেটার আদান-প্রদান করে। এটি সাধারণত JSON বা XML ফরম্যাটে ডেটা পাঠায় এবং গ্রহণ করে। CodeIgniter-এ RESTful API তৈরি করা অনেক সহজ এবং একে কার্যকরীভাবে ব্যবহার করা যায়।

CodeIgniter সরাসরি REST API তৈরি করার জন্য কোনো বিল্ট-ইন ক্লাস সরবরাহ না করলেও, আমরা CodeIgniter REST Controller তৈরি করতে পারি এবং থার্ড-পার্টি লাইব্রেরি ব্যবহার করতে পারি যেমন CodeIgniter RESTful লাইব্রেরি।


CodeIgniter-এ RESTful API তৈরি করার জন্য পদক্ষেপ

১. RESTful API এর জন্য লাইব্রেরি ইনস্টল করা

CodeIgniter-এ RESTful API তৈরি করার জন্য সবচেয়ে সাধারণ লাইব্রেরি হল CodeIgniter Rest Server লাইব্রেরি। এটি ব্যবহার করে API সহজে তৈরি করা যায়।

লাইব্রেরি ইনস্টল করা:

  1. প্রথমে, GitHub থেকে CodeIgniter REST Server ক্লোন করুন অথবা ডাউনলোড করুন।
  2. application/libraries ডিরেক্টরিতে REST_Controller.php ফাইলটি রাখুন।
  3. application/config/config.php ফাইলে config['rest_enable_keys'] কনফিগারেশন সঠিকভাবে সেট করুন।

২. Controller তৈরি করা

Controller তৈরি করার জন্য:

<?php
require(APPPATH . 'libraries/REST_Controller.php');

class User extends REST_Controller {

    public function __construct() {
        parent::__construct();
        // মডেল লোড করা
        $this->load->model('User_model');
    }

    // GET রিকোয়েস্ট হ্যান্ডলিং
    public function index_get($id = NULL) {
        if ($id === NULL) {
            // সমস্ত ব্যবহারকারীর তথ্য
            $users = $this->User_model->get_all_users();
        } else {
            // নির্দিষ্ট ব্যবহারকারীর তথ্য
            $users = $this->User_model->get_user($id);
        }

        if ($users) {
            $this->response($users, REST_Controller::HTTP_OK); // 200 OK
        } else {
            $this->response(NULL, REST_Controller::HTTP_NOT_FOUND); // 404 Not Found
        }
    }

    // POST রিকোয়েস্ট হ্যান্ডলিং
    public function index_post() {
        $data = $this->input->post();
        $insert = $this->User_model->insert_user($data);

        if ($insert) {
            $this->response($data, REST_Controller::HTTP_CREATED); // 201 Created
        } else {
            $this->response(NULL, REST_Controller::HTTP_BAD_REQUEST); // 400 Bad Request
        }
    }

    // PUT রিকোয়েস্ট হ্যান্ডলিং
    public function index_put($id) {
        $data = $this->put();
        $update = $this->User_model->update_user($id, $data);

        if ($update) {
            $this->response($data, REST_Controller::HTTP_OK); // 200 OK
        } else {
            $this->response(NULL, REST_Controller::HTTP_BAD_REQUEST); // 400 Bad Request
        }
    }

    // DELETE রিকোয়েস্ট হ্যান্ডলিং
    public function index_delete($id) {
        $delete = $this->User_model->delete_user($id);

        if ($delete) {
            $this->response(NULL, REST_Controller::HTTP_NO_CONTENT); // 204 No Content
        } else {
            $this->response(NULL, REST_Controller::HTTP_BAD_REQUEST); // 400 Bad Request
        }
    }
}
  • এখানে, GET, POST, PUT, এবং DELETE HTTP মেথড ব্যবহার করা হয়েছে। প্রতিটি মেথডের মাধ্যমে আমরা বিভিন্ন CRUD অপারেশন (Create, Read, Update, Delete) সম্পাদন করতে পারি।
  • REST_Controller কন্ট্রোলারটি REST_Controller.php লাইব্রেরি থেকে ইনহেরিট করা হয়েছে, যা REST API তৈরি করার জন্য ব্যবহার করা হয়।

৩. Model তৈরি করা

Model তৈরি করতে:

<?php
class User_model extends CI_Model {

    public function get_all_users() {
        $query = $this->db->get('users');
        return $query->result();
    }

    public function get_user($id) {
        $query = $this->db->get_where('users', ['id' => $id]);
        return $query->row();
    }

    public function insert_user($data) {
        return $this->db->insert('users', $data);
    }

    public function update_user($id, $data) {
        $this->db->where('id', $id);
        return $this->db->update('users', $data);
    }

    public function delete_user($id) {
        return $this->db->delete('users', ['id' => $id]);
    }
}
  • এই মডেলটি users টেবিলের সাথে CRUD অপারেশনগুলি পরিচালনা করে।

API রিকোয়েস্টের উদাহরণ

১. GET রিকোয়েস্ট

  • URL: http://yourdomain.com/api/user/1
  • উত্তর:
{
    "id": 1,
    "name": "John Doe",
    "email": "john.doe@example.com"
}

২. POST রিকোয়েস্ট

  • URL: http://yourdomain.com/api/user
  • ডেটা (JSON):
{
    "name": "Jane Doe",
    "email": "jane.doe@example.com"
}
  • উত্তর:
{
    "name": "Jane Doe",
    "email": "jane.doe@example.com"
}

৩. PUT রিকোয়েস্ট

  • URL: http://yourdomain.com/api/user/1
  • ডেটা (JSON):
{
    "name": "John Smith",
    "email": "john.smith@example.com"
}
  • উত্তর:
{
    "name": "John Smith",
    "email": "john.smith@example.com"
}

৪. DELETE রিকোয়েস্ট

  • URL: http://yourdomain.com/api/user/1
  • উত্তর: (No content)
{}

API ডকুমেন্টেশন এবং সিকিউরিটি

১. API ডকুমেন্টেশন

RESTful API-র জন্য ডকুমেন্টেশন তৈরি করা খুবই গুরুত্বপূর্ণ, কারণ এটি ব্যবহারকারীদের API-এর বিভিন্ন ফিচার এবং রিকোয়েস্ট পদ্ধতি সম্পর্কে জানিয়ে দেয়।

২. সিকিউরিটি

API এর সিকিউরিটি নিশ্চিত করতে:

  • Authentication: API তে JWT (JSON Web Token) বা OAuth ব্যবহার করে ইউজার অথেন্টিকেশন নিশ্চিত করুন।
  • Rate Limiting: API কলের জন্য রেট লিমিটিং চালু করুন, যাতে অতিরিক্ত ব্যবহার বন্ধ করা যায়।

CodeIgniter-এ RESTful API তৈরি করা সহজ এবং কার্যকর। আপনি GET, POST, PUT, DELETE HTTP মেথড ব্যবহার করে ডেটার CRUD অপারেশন পরিচালনা করতে পারেন এবং JSON রেসপন্স প্রদান করতে পারেন। এই API-এর মাধ্যমে আপনার অ্যাপ্লিকেশন অন্যান্য অ্যাপ্লিকেশন বা মোবাইল অ্যাপ্লিকেশনগুলির সাথে যোগাযোগ করতে সক্ষম হবে।

Content added By

RESTful API এর ধারণা

RESTful API (Representational State Transfer) হলো একটি আর্কিটেকচারাল স্টাইল যা ওয়েব সার্ভিস নির্মাণের জন্য ব্যবহৃত হয়। এটি HTTP প্রোটোকল এবং HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করে। CodeIgniter ফ্রেমওয়ার্কে RESTful API তৈরি করার জন্য একটি সহজ এবং কার্যকরী পদ্ধতি রয়েছে।


RESTful API কী?

RESTful API একটি এপিআই (অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস) যা REST (Representational State Transfer) পদ্ধতি অনুসরণ করে। এটি একটি স্ট্যান্ডার্ড ডিজাইন প্যাটার্ন, যা HTTP প্রোটোকল এবং রিসোর্স ভিত্তিক আর্কিটেকচার ব্যবহার করে সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগ পরিচালনা করে।

RESTful API এর প্রধান বৈশিষ্ট্য:

  1. Stateless: সার্ভার প্রতিটি রিকোয়েস্টের জন্য স্বতন্ত্রভাবে কাজ করে। আগের রিকোয়েস্টের কোন তথ্য সংরক্ষিত থাকে না।
  2. Client-Server Architecture: ক্লায়েন্ট এবং সার্ভার আলাদা আলাদা থাকে, এবং তারা নির্দিষ্ট API এর মাধ্যমে একে অপরের সাথে যোগাযোগ করে।
  3. Cacheable: ডেটা ক্যাশ করা যায়, যাতে পারফরম্যান্স বৃদ্ধি পায়।
  4. Uniform Interface: সমস্ত রিসোর্স (ডেটা) একটি নির্দিষ্ট কনভেনশন অনুসরণ করে অ্যাক্সেস করা হয়।

HTTP Methods (পদ্ধতি)

RESTful API এ বিভিন্ন HTTP মেথড ব্যবহার করা হয় ডেটা পরিচালনার জন্য:

HTTP Methodবর্ণনা
GETসার্ভার থেকে ডেটা রিট্রিভ করা।
POSTনতুন ডেটা সার্ভারে আপলোড করা।
PUTবিদ্যমান ডেটা আপডেট করা।
DELETEডেটা সার্ভার থেকে মুছে ফেলা।

CodeIgniter এ RESTful API তৈরি

CodeIgniter তে RESTful API তৈরি করতে, সাধারণত REST Controller এবং HTTP methods ব্যবহৃত হয়। এছাড়া, আপনি codeigniter-restserver লাইব্রেরি ব্যবহার করে সহজেই API তৈরি করতে পারেন।

ধাপ ১: codeigniter-restserver লাইব্রেরি ইনস্টল করা

  1. প্রথমে, CodeIgniter-এ RESTful API ফিচার সক্রিয় করার জন্য codeigniter-restserver লাইব্রেরি ইনস্টল করতে হবে।
  2. Composer ব্যবহার করে লাইব্রেরি ইনস্টল করতে হবে:

    composer require chriso/codeigniter-restserver
    

ধাপ ২: Controller তৈরি করা

CodeIgniter এ API তৈরি করতে একটি কাস্টম কন্ট্রোলার তৈরি করুন, যেটি GET, POST, PUT, DELETE মেথডগুলির মাধ্যমে ডেটা গ্রহণ এবং প্রেরণ করতে পারে।

উদাহরণ: ApiController.php কন্ট্রোলার
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use Restserver\Libraries\REST_Controller;

class ApiController extends REST_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('User_model'); // মডেল লোড
    }

    // GET Request - User ডেটা রিটার্ন
    public function user_get($id = NULL) {
        if ($id === NULL) {
            $users = $this->User_model->get_users();
            $this->response($users, REST_Controller::HTTP_OK);
        } else {
            $user = $this->User_model->get_user($id);
            if ($user) {
                $this->response($user, REST_Controller::HTTP_OK);
            } else {
                $this->response(['message' => 'User not found'], REST_Controller::HTTP_NOT_FOUND);
            }
        }
    }

    // POST Request - নতুন User তৈরি
    public function user_post() {
        $data = $this->post();
        $result = $this->User_model->create_user($data);
        if ($result) {
            $this->response(['message' => 'User created successfully'], REST_Controller::HTTP_CREATED);
        } else {
            $this->response(['message' => 'User creation failed'], REST_Controller::HTTP_BAD_REQUEST);
        }
    }

    // PUT Request - User আপডেট করা
    public function user_put($id) {
        $data = $this->put();
        $result = $this->User_model->update_user($id, $data);
        if ($result) {
            $this->response(['message' => 'User updated successfully'], REST_Controller::HTTP_OK);
        } else {
            $this->response(['message' => 'User update failed'], REST_Controller::HTTP_BAD_REQUEST);
        }
    }

    // DELETE Request - User ডিলিট করা
    public function user_delete($id) {
        $result = $this->User_model->delete_user($id);
        if ($result) {
            $this->response(['message' => 'User deleted successfully'], REST_Controller::HTTP_OK);
        } else {
            $this->response(['message' => 'User deletion failed'], REST_Controller::HTTP_BAD_REQUEST);
        }
    }
}
Controller ব্যাখ্যা:
  • GET method: /user অথবা /user/{id} রিকোয়েস্টে ব্যবহারকারীদের তথ্য রিটার্ন করে।
  • POST method: /user রিকোয়েস্টে নতুন ইউজার তৈরি করা হয়।
  • PUT method: /user/{id} রিকোয়েস্টে ব্যবহারকারী তথ্য আপডেট করা হয়।
  • DELETE method: /user/{id} রিকোয়েস্টে ব্যবহারকারী তথ্য ডিলিট করা হয়।

ধাপ ৩: Routes সেটআপ

application/config/routes.php ফাইলে রাউটিং সেটআপ করুন:

$route['api/user/(:num)'] = 'ApiController/user_get/$1'; // GET request to fetch user by ID
$route['api/user'] = 'ApiController/user_post'; // POST request to create new user
$route['api/user/(:num)'] = 'ApiController/user_put/$1'; // PUT request to update user
$route['api/user/(:num)'] = 'ApiController/user_delete/$1'; // DELETE request to delete user

CodeIgniter এ RESTful API এর সুবিধা

  1. এমভিসি স্ট্রাকচার: CodeIgniter MVC স্ট্রাকচারের মাধ্যমে API তৈরি করা সহজ।
  2. ডেটা অ্যাক্সেসের জন্য RESTful স্টাইল: API রিকোয়েস্ট গুলি স্পষ্ট এবং স্ট্যান্ডার্ড।
  3. HTTP মেথড সাপোর্ট: API বিভিন্ন HTTP মেথড (GET, POST, PUT, DELETE) সাপোর্ট করে, যা ডেটা সংগ্রহ, তৈরি, আপডেট এবং ডিলিট করতে সক্ষম।
  4. JSON রেসপন্স: JSON ফরম্যাটে ডেটা আদান-প্রদান করা হয়, যা ওয়েব এবং মোবাইল অ্যাপ্লিকেশনগুলির মধ্যে ডেটা আদান-প্রদানকে সহজ করে তোলে।

CodeIgniter-এ RESTful API তৈরি করা খুবই সহজ এবং কার্যকরী। এটি ব্যবহারকারীদের HTTP মেথড ব্যবহার করে ডেটা আদান-প্রদান করতে এবং বিভিন্ন রিসোর্স অ্যাক্সেস করতে সক্ষম করে। CodeIgniter এর সাহায্যে RESTful API দ্রুত তৈরি করা সম্ভব, যা আপনার অ্যাপ্লিকেশনকে আরও স্কেলেবল এবং ইন্টারঅ্যাকটিভ করে তোলে।

Content added By

CodeIgniter দিয়ে REST API তৈরি করা

REST API (Representational State Transfer Application Programming Interface) হলো একটি প্রোগ্রামিং ইন্টারফেস যা ক্লায়েন্ট এবং সার্ভারের মধ্যে HTTP প্রোটোকল ব্যবহার করে ডেটা আদান-প্রদান করে। CodeIgniter ফ্রেমওয়ার্ক ব্যবহার করে সহজেই একটি REST API তৈরি করা সম্ভব। CodeIgniter একটি লাইটওয়েট ফ্রেমওয়ার্ক হওয়ার কারণে এটি RESTful API তৈরি করতে খুবই উপযুক্ত।

এই গাইডে আমরা দেখব কীভাবে CodeIgniter দিয়ে একটি REST API তৈরি করতে হয়।


REST API তৈরি করার জন্য প্রস্তুতি

১. CodeIgniter এর RESTful API Library ইনস্টল করা

CodeIgniter এর জন্য একটি জনপ্রিয় REST API Library হল CodeIgniter REST Server। এটি REST API তৈরি করার জন্য প্রয়োজনীয় সকল ফাংশনালিটি প্রদান করে। আপনাকে এই Library টি ইনস্টল করতে হবে।

১.১ CodeIgniter REST Server ইনস্টল করা
  1. প্রথমে, CodeIgniter REST Server ফাইলটি ডাউনলোড করুন অথবা GitHub থেকে Clone করুন:
  2. ডাউনলোড বা ক্লোন করা ফোল্ডারটি আপনার CodeIgniter প্রোজেক্টে application/third_party ডিরেক্টরিতে রাখুন।
  3. application/config/config.php ফাইলে $config['rest_api'] সেট করুন:

    $config['rest_api'] = TRUE;
    
  4. এরপর application/libraries/Rest.php ফাইলটি লোড করুন:

    $this->load->library('rest');
    

CodeIgniter এ REST API কনফিগারেশন

২. কনফিগারেশন সেটআপ

application/config/rest.php ফাইলে REST API এর কনফিগারেশন সেট করুন। এখানে কিছু গুরুত্বপূর্ণ কনফিগারেশন প্যারামিটার:

$config['rest_enabled'] = TRUE;            // REST API সক্রিয় করা
$config['rest_auth'] = 'basic';            // Authentication টাইপ (basic, none, etc.)
$config['rest_format'] = 'json';           // রেসপন্স ফরম্যাট (json/xml)
$config['rest_valid_keys'] = array('key1', 'key2'); // অ্যাপ্লিকেশন কী (optional)

REST API Controller তৈরি

৩. Controller তৈরি করা

REST API তৈরি করতে একটি কাস্টম Controller তৈরি করুন, যেখানে API রাউটগুলি থাকবে। উদাহরণস্বরূপ, একটি UserController তৈরি করা হল, যা একটি GET এবং POST রিকোয়েস্ট হ্যান্ডল করবে।

৩.১ Controller কোড
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class UserController extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('UserModel');  // UserModel লোড করা
        $this->load->library('rest');     // Rest Library লোড করা
    }

    // GET রিকোয়েস্ট হ্যান্ডলিং
    public function get_user($id = NULL) {
        $data = $this->UserModel->get_user($id);
        
        if ($data) {
            $this->rest->response($data, 200); // Success response
        } else {
            $this->rest->response(array('error' => 'No data found'), 404); // Not found
        }
    }

    // POST রিকোয়েস্ট হ্যান্ডলিং
    public function create_user() {
        $user_data = $this->input->post();  // POST ডেটা গ্রহণ

        if ($this->UserModel->insert_user($user_data)) {
            $this->rest->response(array('message' => 'User created successfully'), 201); // Created response
        } else {
            $this->rest->response(array('error' => 'Failed to create user'), 400); // Bad request
        }
    }
}
  • এখানে get_user($id) মেথডটি একটি GET রিকোয়েস্ট হ্যান্ডল করে এবং নির্দিষ্ট user ID এর তথ্য রিটার্ন করে।
  • create_user() মেথডটি একটি POST রিকোয়েস্ট হ্যান্ডল করে এবং নতুন ব্যবহারকারী তৈরি করে।

Model তৈরি

৪. Model তৈরি করা

Model তৈরি করার মাধ্যমে ডাটাবেস থেকে ডেটা নিয়ে API এর মাধ্যমে রেসপন্স পাঠানো হয়। এখানে UserModel তৈরি করা হল।

৪.১ UserModel কোড
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class UserModel extends CI_Model {

    public function get_user($id = NULL) {
        if ($id === NULL) {
            $query = $this->db->get('users');
            return $query->result_array();
        }
        $query = $this->db->get_where('users', array('id' => $id));
        return $query->row_array();
    }

    public function insert_user($data) {
        return $this->db->insert('users', $data);
    }
}
  • get_user($id) মেথডটি ডাটাবেস থেকে ব্যবহারকারীর তথ্য খুঁজে বের করে।
  • insert_user($data) মেথডটি ডাটাবেসে নতুন ব্যবহারকারী সংরক্ষণ করে।

Routing

৫. Routing সেটআপ

application/config/routes.php ফাইলে API রাউটগুলি সঠিকভাবে সেট করুন। উদাহরণ:

$route['api/users/(:num)'] = 'UserController/get_user/$1'; // GET user by ID
$route['api/users'] = 'UserController/create_user';         // POST create user
  • /api/users/(:num): একটি ব্যবহারকারীর তথ্য GET রিকোয়েস্ট দ্বারা পাওয়া যাবে।
  • /api/users: নতুন ব্যবহারকারী তৈরি করতে POST রিকোয়েস্ট পাঠানো হবে।

JSON Response

CodeIgniter REST API JSON রেসপন্স প্রদান করতে নিচের কোড ব্যবহার করা হয়:

$this->rest->response($data, 200); // JSON রেসপন্স এবং HTTP স্ট্যাটাস কোড (200 = OK)

API টেস্টিং

৬. API টেস্ট করার জন্য

API টেস্ট করার জন্য আপনি Postman বা cURL ব্যবহার করতে পারেন।

GET Request (User by ID):

GET http://localhost/api/users/1

POST Request (Create User):

POST http://localhost/api/users

Request Body:

{
  "name": "John Doe",
  "email": "john.doe@example.com",
  "password": "123456"
}

CodeIgniter দিয়ে REST API তৈরি করা খুবই সহজ। RESTful API ব্যবহারকারীদের JSON ফরম্যাটে ডেটা প্রদান করে এবং সেগুলিকে সহজভাবে ম্যানিপুলেট করা যায়। এই গাইডে আমরা দেখেছি কীভাবে GET, POST রিকোয়েস্ট হ্যান্ডল করা হয় এবং কীভাবে ডাটাবেস থেকে ডেটা রিটার্ন করা যায়।

Content added By

API Endpoints এবং Methods (GET, POST, PUT, DELETE)

API (Application Programming Interface) হল একটি ইন্টারফেস যা বিভিন্ন সিস্টেমের মধ্যে ডেটা আদান-প্রদান করতে ব্যবহৃত হয়। CodeIgniter একটি শক্তিশালী ফ্রেমওয়ার্ক যা RESTful API তৈরি করার জন্য সহজ পদ্ধতি সরবরাহ করে। RESTful API তৈরির জন্য HTTP মেথডগুলি (যেমন GET, POST, PUT, DELETE) ব্যবহার করা হয়, এবং CodeIgniter এ এই মেথডগুলির মাধ্যমে ডেটা পরিচালনা করা যায়।

এই টিউটোরিয়ালে, আমরা API endpoints এবং HTTP মেথডগুলো নিয়ে আলোচনা করবো এবং দেখাবো কীভাবে CodeIgniter ব্যবহার করে GET, POST, PUT, এবং DELETE মেথডের মাধ্যমে API তৈরি করা যায়।


RESTful API Endpoints এবং Methods

RESTful API তৈরির জন্য প্রধানত চারটি HTTP মেথড ব্যবহৃত হয়:

  1. GET: ডেটা পড়তে ব্যবহৃত হয়।
  2. POST: নতুন ডেটা তৈরি করতে ব্যবহৃত হয়।
  3. PUT: বিদ্যমান ডেটা আপডেট করতে ব্যবহৃত হয়।
  4. DELETE: ডেটা মুছে ফেলতে ব্যবহৃত হয়।

CodeIgniter এ API তৈরি করার জন্য ধাপসমূহ

১. Controller তৈরি

প্রথমে একটি API কন্ট্রোলার তৈরি করতে হবে যেখানে API endpoints এবং HTTP মেথডগুলির জন্য মেথডগুলো থাকবে।

১.1 API Controller (ApiController.php)
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class ApiController extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->database(); // ডাটাবেস লোড
        $this->load->helper('url'); // URL হেল্পার লোড
    }

    // GET: Retrieve a list of users
    public function get_users() {
        $query = $this->db->get('users'); // users টেবিল থেকে ডেটা পাওয়া
        $data = $query->result_array();
        echo json_encode($data); // JSON রেসপন্স
    }

    // POST: Create a new user
    public function create_user() {
        $data = json_decode(file_get_contents('php://input'), true); // JSON রিকোয়েস্ট ডেটা
        $this->db->insert('users', $data); // ডেটা ইনসার্ট করা
        echo json_encode(['status' => 'success', 'message' => 'User created successfully']);
    }

    // PUT: Update an existing user
    public function update_user($id) {
        $data = json_decode(file_get_contents('php://input'), true); // JSON রিকোয়েস্ট ডেটা
        $this->db->where('id', $id);
        $this->db->update('users', $data); // ডেটা আপডেট করা
        echo json_encode(['status' => 'success', 'message' => 'User updated successfully']);
    }

    // DELETE: Delete a user
    public function delete_user($id) {
        $this->db->where('id', $id);
        $this->db->delete('users'); // ডেটা ডিলিট করা
        echo json_encode(['status' => 'success', 'message' => 'User deleted successfully']);
    }
}
  • get_users() মেথডটি GET রিকোয়েস্টের মাধ্যমে users টেবিল থেকে সমস্ত ব্যবহারকারীর তথ্য সংগ্রহ করে এবং JSON আকারে রিটার্ন করে।
  • create_user() মেথডটি POST রিকোয়েস্টের মাধ্যমে নতুন ব্যবহারকারী তৈরি করে।
  • update_user($id) মেথডটি PUT রিকোয়েস্টের মাধ্যমে একটি বিদ্যমান ব্যবহারকারীকে আপডেট করে।
  • delete_user($id) মেথডটি DELETE রিকোয়েস্টের মাধ্যমে একটি ব্যবহারকারী মুছে ফেলে।

২. Routes সেটআপ

application/config/routes.php ফাইলে API endpoints রাউটিং সেটআপ করুন।

$route['api/users'] = 'ApiController/get_users'; // GET all users
$route['api/user/create'] = 'ApiController/create_user'; // POST create user
$route['api/user/update/(:num)'] = 'ApiController/update_user/$1'; // PUT update user
$route['api/user/delete/(:num)'] = 'ApiController/delete_user/$1'; // DELETE delete user

এখানে:

  • /api/users: সমস্ত ব্যবহারকারীর তালিকা দেখানোর জন্য GET রিকোয়েস্ট।
  • /api/user/create: নতুন ব্যবহারকারী তৈরি করার জন্য POST রিকোয়েস্ট।
  • /api/user/update/{id}: নির্দিষ্ট ব্যবহারকারী আপডেট করার জন্য PUT রিকোয়েস্ট।
  • /api/user/delete/{id}: নির্দিষ্ট ব্যবহারকারী মুছে ফেলার জন্য DELETE রিকোয়েস্ট।

CodeIgniter API এর মাধ্যমে HTTP মেথড ব্যবহার

১. GET মেথড (ডেটা পড়া)

GET মেথড API কল ব্যবহারকারীর কাছে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, সমস্ত ব্যবহারকারীর তালিকা বের করার জন্য:

API Call (GET):

GET http://localhost/your_project/api/users

Response (JSON):

[
    {
        "id": 1,
        "name": "John Doe",
        "email": "john.doe@example.com"
    },
    {
        "id": 2,
        "name": "Jane Doe",
        "email": "jane.doe@example.com"
    }
]

২. POST মেথড (নতুন ডেটা তৈরি)

POST মেথড ব্যবহারকারী থেকে ডেটা গ্রহণ করে এবং ডাটাবেসে নতুন রেকর্ড যোগ করে।

API Call (POST):

POST http://localhost/your_project/api/user/create
Content-Type: application/json
Body:
{
    "name": "New User",
    "email": "new.user@example.com"
}

Response (JSON):

{
    "status": "success",
    "message": "User created successfully"
}

৩. PUT মেথড (ডেটা আপডেট)

PUT মেথড ব্যবহারকারী থেকে নতুন ডেটা গ্রহণ করে এবং একটি বিদ্যমান রেকর্ড আপডেট করে।

API Call (PUT):

PUT http://localhost/your_project/api/user/update/1
Content-Type: application/json
Body:
{
    "name": "Updated User",
    "email": "updated.user@example.com"
}

Response (JSON):

{
    "status": "success",
    "message": "User updated successfully"
}

৪. DELETE মেথড (ডেটা মুছে ফেলা)

DELETE মেথড একটি নির্দিষ্ট ডেটা মুছে ফেলার জন্য ব্যবহার করা হয়।

API Call (DELETE):

DELETE http://localhost/your_project/api/user/delete/1

Response (JSON):

{
    "status": "success",
    "message": "User deleted successfully"
}

API সুরক্ষা

এটি গুরুত্বপূর্ণ যে আপনি আপনার API গুলিকে সুরক্ষিত রাখবেন। API সুরক্ষার জন্য API Key, OAuth বা JWT (JSON Web Tokens) ব্যবহার করা যেতে পারে। CodeIgniter-এ Authorization হেডার চেক করে সুরক্ষা নিশ্চিত করা সম্ভব।


CodeIgniter-এ API endpoints তৈরি করা সহজ এবং কার্যকরী। GET, POST, PUT, এবং DELETE মেথড ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশন থেকে ডেটা প্রক্রিয়া এবং পরিচালনা করতে পারেন। এটি RESTful API তৈরির জন্য একটি কার্যকরী পদ্ধতি এবং আপনাকে JSON ডেটা বিনিময় করতে সাহায্য করে।

Content added By

API Authentication এবং Token Based Security

API Authentication এবং Token Based Security ওয়েব অ্যাপ্লিকেশন বা মোবাইল অ্যাপ্লিকেশনগুলির মধ্যে নিরাপদ ডেটা আদান-প্রদান এবং ব্যবহারকারী যাচাই করার জন্য অত্যন্ত গুরুত্বপূর্ণ। CodeIgniter ফ্রেমওয়ার্কে API Authentication এবং Token-based Security বাস্তবায়নের জন্য সাধারণত JWT (JSON Web Token) বা OAuth পদ্ধতি ব্যবহৃত হয়।

এই গাইডে, আমরা JWT ব্যবহার করে API Authentication এবং Token Based Security কিভাবে CodeIgniter-এ বাস্তবায়ন করা যায়, তা ব্যাখ্যা করবো।


JWT (JSON Web Token) কী?

JWT (JSON Web Token) হল একটি ওপেন স্ট্যান্ডার্ড (RFC 7519) যা একটি টোকেন হিসেবে JSON অবজেক্টের মধ্যে তথ্য সংরক্ষণ করে। এটি নিরাপদভাবে একাধিক সিস্টেমের মধ্যে তথ্য আদান-প্রদান করতে ব্যবহৃত হয়। JWT একটি header, payload, এবং signature দ্বারা গঠিত।

  1. Header: টোকেনের ধরণ (যেমন JWT) এবং সাইনিং এলগরিদম।
  2. Payload: তথ্য বা দাবি যা টোকেনের মধ্যে রাখা হয়।
  3. Signature: টোকেনের অখণ্ডতা যাচাই করতে ব্যবহৃত।

JWT Token-Based Authentication বাস্তবায়ন

১. JWT Library ইনস্টলেশন

CodeIgniter এ JWT authentication বাস্তবায়নের জন্য একটি JWT লাইব্রেরি ইনস্টল করতে হবে। এটি ব্যবহার করার জন্য একটি third-party library বা composer ব্যবহার করা যেতে পারে।

১.1 JWT লাইব্রেরি ইনস্টলেশন (Composer)

যদি Composer ব্যবহার করেন, তাহলে আপনার প্রজেক্টের ডিরেক্টরিতে কমান্ড চালান:

composer require firebase/php-jwt
১.2 JWT লাইব্রেরি ইনস্টলেশন (Manual)

যদি Composer ব্যবহার না করেন, তাহলে firebase/php-jwt লাইব্রেরিটি GitHub থেকে ডাউনলোড করে application/libraries ফোল্ডারে রাখুন।


২. JWT লাইব্রেরি লোড করা

যদি আপনি manual ইনস্টলেশন করেন, তবে JWT.php ক্লাস লোড করতে হবে:

require_once(APPPATH.'libraries/JWT.php');

৩. JWT Authentication Controller তৈরি

এখন আমরা Authentication Controller তৈরি করবো, যা লগইন করলে JWT টোকেন তৈরি করবে এবং API রিকোয়েস্টে ওই টোকেন যাচাই করবে।

৩.1 Authentication Controller (Login এবং JWT Token রিটার্ন)
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use \Firebase\JWT\JWT;

class Auth extends CI_Controller {

    private $secret_key = "your_secret_key"; // আপনার সিক্রেট কি

    public function __construct() {
        parent::__construct();
        $this->load->library('form_validation');
        $this->load->model('User_model');
    }

    // লগইন এবং JWT টোকেন রিটার্ন
    public function login() {
        $username = $this->input->post('username');
        $password = $this->input->post('password');

        $user = $this->User_model->get_user_by_credentials($username, $password);

        if ($user) {
            // JWT টোকেন তৈরি
            $payload = array(
                "iat" => time(),
                "exp" => time() + 3600, // 1 ঘণ্টার জন্য টোকেন বৈধ
                "user_id" => $user->id
            );

            $jwt = JWT::encode($payload, $this->secret_key);

            // সফল লগইনের পরে JWT টোকেন রিটার্ন
            echo json_encode(array('status' => 'success', 'token' => $jwt));
        } else {
            // ইউজার পাওয়া না গেলে
            echo json_encode(array('status' => 'error', 'message' => 'Invalid credentials'));
        }
    }
}
  • এখানে login() মেথড ব্যবহারকারী নাম এবং পাসওয়ার্ড যাচাই করে এবং যদি সঠিক হয় তবে JWT টোকেন তৈরি করে।
  • JWT::encode() ফাংশনটি টোকেন তৈরি করতে ব্যবহার করা হয়।

৪. JWT Token যাচাই করা

এখন API রিকোয়েস্টে JWT টোকেন যাচাই করার জন্য একটি মেথড তৈরি করা হবে।

৪.1 API Controller (JWT Token যাচাই)
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use \Firebase\JWT\JWT;

class Api extends CI_Controller {

    private $secret_key = "your_secret_key"; // আপনার সিক্রেট কি

    public function __construct() {
        parent::__construct();
    }

    // Token যাচাই
    public function authenticate() {
        $token = $this->input->get_request_header('Authorization'); // Authorization হেডার থেকে টোকেন পাওয়া
        if ($token) {
            try {
                // JWT টোকেন ডিকোড করা
                $decoded = JWT::decode($token, $this->secret_key);
                $user_id = $decoded->user_id; // টোকেন থেকে ইউজার আইডি পাওয়া

                // সফলভাবে যাচাই হলে, ডেটা রিটার্ন
                echo json_encode(array('status' => 'success', 'user_id' => $user_id));
            } catch (Exception $e) {
                // যদি টোকেন অবৈধ হয়
                echo json_encode(array('status' => 'error', 'message' => 'Invalid token'));
            }
        } else {
            echo json_encode(array('status' => 'error', 'message' => 'Token not provided'));
        }
    }
}
  • এখানে authenticate() মেথড ব্যবহার করে Authorization হেডার থেকে টোকেন বের করা হয় এবং JWT::decode() ফাংশন দ্বারা টোকেন ডিকোড করা হয়।

৫. JWT Token পাঠানোর উদাহরণ (AJAX)

এখন আমরা AJAX কলের মাধ্যমে JWT টোকেন ব্যবহার করে ডেটা পাঠাবো।

$.ajax({
    url: 'http://example.com/api/authenticate', // API URL
    type: 'GET',
    headers: {
        'Authorization': 'Bearer ' + token // JWT টোকেন
    },
    success: function(response) {
        console.log(response);
    },
    error: function() {
        console.log('Invalid token');
    }
});
  • এখানে Authorization হেডারে Bearer প্রিফিক্স সহ JWT টোকেন পাঠানো হয়।

CodeIgniter-এ API Authentication এবং Token-Based Security বাস্তবায়নের জন্য JWT (JSON Web Token) অত্যন্ত কার্যকরী পদ্ধতি। এটি নিরাপদ এবং কার্যকরী ডেটা আদান-প্রদান নিশ্চিত করে, যেখানে সার্ভার সাইডে শুধুমাত্র একটি সিক্রেট কিপর্যন্ত ব্যবহারকারী যাচাই করা হয়। JWT ব্যবহার করলে, আপনার API গুলি নিরাপদ এবং স্কেলেবল হবে।

Content added By
Promotion