PHP code example of moudarir / codeigniter-rest-api
1. Go to this page and download the library: Download moudarir/codeigniter-rest-api library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
moudarir / codeigniter-rest-api example snippets
{
...
" "moudarir/codeigniter-rest-api": "^3.0"
},
...
}
$config['enable_hooks'] = true;
$config['composer_autoload'] = true; // Or the path to 'autoload.php' file. Ex: APPPATH.'vendor/autoload.php'
$hook = \Moudarir\CodeigniterApi\Routes\Hook::initialize();
$route = \Moudarir\CodeigniterApi\Routes\Router::getRoutes();
\Moudarir\CodeigniterApi\Routes\Router::group('users', ['namespace' => 'api'], function () {
\Moudarir\CodeigniterApi\Routes\Router::get('', 'apiUsers@index');
\Moudarir\CodeigniterApi\Routes\Router::post('', 'apiUsers@create');
\Moudarir\CodeigniterApi\Routes\Router::post('login', 'apiUsers@login');
\Moudarir\CodeigniterApi\Routes\Router::put('{id}', 'apiUsers@update');
\Moudarir\CodeigniterApi\Routes\Router::get('{id}', 'apiUsers@show');
});
// This will generate route array like this:
/**
$route = [
"users" => [
"GET" => "api/apiUsers/index",
"POST" => "api/apiUsers/create",
],
"users/login" => [
"POST" => "api/apiUsers/login"
],
"users/([0-9]+)" => [
"PUT" => "api/apiUsers/update/$1"
"GET" => "api/apiUsers/show/$1"
],
"default_controller" => "welcome", // Can be changed in '[your-project]/application/config/rest-api-server.php' file.
"translate_uri_dashes" => false, // Can be changed in '[your-project]/application/config/rest-api-server.php' file.
"404_override" => "pageNotFound/index", // Can be changed in '[your-project]/application/config/rest-api-server.php' file.
]
**/
defined('BASEPATH') || exit('No direct script access allowed');
use Firebase\JWT\JWT;
use Moudarir\CodeigniterApi\Exceptions\DatabaseCreateException;
use Moudarir\CodeigniterApi\Http\Server;
use Moudarir\CodeigniterApi\Models\ApiKey;
use Moudarir\CodeigniterApi\Models\User;
class ApiUsers extends Server
{
public function index()
{
$entity = new User();
$page = $this->get('page');
$total = $entity->count();
$response = [
'total' => $total,
'items' => $total === 0 ? [] : $entity->all(['page' => $page, 'limit' => $this->get('limit')]),
];
if ($page !== null) {
$response['page'] = (int)$page === 0 ? 1 : (int)$page;
}
self::getResponse()->ok($response);
}
public function show(int $id)
{
if ($id <= 0) {
self::getResponse()->badRequest();
}
$item = (new User())->find($id);
if ($item === null) {
self::getResponse()->notFound();
}
self::getResponse()->ok(['item' => $item]);
}
public function create()
{
$post = $this->post();
$errors = [];
if (array_key_exists('email', $post)) {
$email = $this->post('email');
if (empty($email) || filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
$errors['email'] = "This field is not a valid email address.";
}
} else {
$errors['email'] = "This field is tity::getDatabase()->trans_rollback();
self::getResponse()->error("Error occurred during account creation.");
}
}
public function update($id)
{
self::getResponse()->ok([
'data' => [
'info' => $this->getAuthData(),
'args' => $this->put(),
'id' => $id,
]
]);
}
public function login()
{
$apiConfig = $this->getApiConfig();
$secret = getenv("JWT_SECRET");
$secret !== false || $secret = $apiConfig['jwt_secret'];
$user = (new User())->find($this->getApiKey()['user_id']);
$payload = [
'iss' => 'http://example.org',
'aud' => 'http://example.com',
'iat' => 1356999524,
'nbf' => 1357000000,
'user' => [
'user_id' => $user['id'],
'firstname' => $user['firstname'],
'lastname' => $user['lastname'],
'email' => $user['email'],
]
];
self::getResponse()->ok([
'data' => [
'jwt_key' => JWT::encode($payload, $secret, $apiConfig['jwt_algorithm']),
]
]);
}
}