Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chriskacerguis/codeigniter-restserver
A fully RESTful server implementation for CodeIgniter using one library, one config file and one controller.
https://github.com/chriskacerguis/codeigniter-restserver
Last synced: 19 days ago
JSON representation
A fully RESTful server implementation for CodeIgniter using one library, one config file and one controller.
- Host: GitHub
- URL: https://github.com/chriskacerguis/codeigniter-restserver
- Owner: chriskacerguis
- License: mit
- Created: 2009-06-18T15:54:54.000Z (over 15 years ago)
- Default Branch: master
- Last Pushed: 2024-09-17T02:20:49.000Z (2 months ago)
- Last Synced: 2024-10-13T21:40:42.379Z (about 1 month ago)
- Language: PHP
- Homepage:
- Size: 3.79 MB
- Stars: 4,891
- Watchers: 405
- Forks: 2,856
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CodeIgniter RestServer
[![StyleCI](https://github.styleci.io/repos/230589/shield?branch=master)](https://github.styleci.io/repos/230589)
A fully RESTful server implementation for CodeIgniter using one library, one config file and one controller.
## Important!!
CodeIgniter 4 includes REST support out of the box and therefore does not require the RestServer.
See the documentation here: [RESTful Resource Handling](https://codeigniter4.github.io/userguide/incoming/restful.html)
## Requirements
- PHP 7.2 or greater
- CodeIgniter 3.1.11+## Installation
```sh
composer require chriskacerguis/codeigniter-restserver
```## Usage
CodeIgniter Rest Server is available on [Packagist](https://packagist.org/packages/chriskacerguis/codeigniter-restserver) (using semantic versioning), and installation via composer is the recommended way to install Codeigniter Rest Server. Just add this line to your `composer.json` file:
```json
"chriskacerguis/codeigniter-restserver": "^3.1"
```or run
```sh
composer require chriskacerguis/codeigniter-restserver
```Note that you will need to copy `rest.php` to your `config` directory (e.g. `application/config`)
Step 1: Add this to your controller (should be before any of your code)
```php
use chriskacerguis\RestServer\RestController;
```Step 2: Extend your controller
```php
class Example extends RestController
```## Basic GET example
Here is a basic example. This controller, which should be saved as `Api.php`, can be called in two ways:
* `http://domain/api/users/` will return the list of all users
* `http://domain/api/users/id/1` will only return information about the user with id = 1```php
0, 'name' => 'John', 'email' => '[email protected]'],
['id' => 1, 'name' => 'Jim', 'email' => '[email protected]'],
];$id = $this->get( 'id' );
if ( $id === null )
{
// Check if the users data store contains users
if ( $users )
{
// Set the response and exit
$this->response( $users, 200 );
}
else
{
// Set the response and exit
$this->response( [
'status' => false,
'message' => 'No users were found'
], 404 );
}
}
else
{
if ( array_key_exists( $id, $users ) )
{
$this->response( $users[$id], 200 );
}
else
{
$this->response( [
'status' => false,
'message' => 'No such user found'
], 404 );
}
}
}
}
```## Extending supported formats
If you need to be able to support more formats for replies, you can extend the
`Format` class to add the required `to_...` methods1. Extend the `RestController` class (in `libraries/MY_REST_Controller.php`)
```php
format = new Format();
}
}
```2. Extend the `Format` class (can be created as a CodeIgniter library in `libraries/Format.php`).
Following is an example to add support for PDF output```php
_data;
}if (is_array($data) || substr($data, 0, 4) != '%PDF') {
$html = $this->to_html($data);// Use your PDF lib of choice. For example mpdf
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML($html);
return $mpdf->Output('', 'S');
}return $data;
}
}
```