AOEpeople/Restler

Name: Restler

Owner: AOE

Description: Simple and effective multi-format Web API Server to host your PHP API as Pragmatic REST and / or RESTful API

Forked from: Luracast/Restler

Created: 2016-02-13 19:07:49.0

Updated: 2016-12-29 20:12:52.0

Pushed: 2017-10-13 10:45:42.0

Homepage: http://luracast.com/products/restler/

Size: 5575

Language: JavaScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Restler Luracast Restler

![Gitter](https://badges.gitter.im/Join Chat.svg) Latest Stable Version Total Downloads Latest Unstable Version License

Version 3.0 Release Candidate 5

Restler is a simple and effective multi-format Web API Server written in PHP.

Just deal with your business logic in php, restler will take care of the REST!

if you do not have PHP >= 5.3.2 on your server and wont be able to upgrade you may use Restler 2 instead

Restler 3 - Better APIs by Design
Features
Git Repository and the Branches
  1. Most stable and recent version is maintained at the master branch, previous versions are kept in the branches such as v1 and v2

  2. Version branch with the current version such as v3 is used for building up the next release. It's documentation may not be updated frequently and thus reserved for the daring ones.

  3. Feature branches such as features/html and features/router are purely for experimentation purpose to try out a feature

Installation

Make sure PHP 5.3.2 or above (at least 5.3.4 recommended to avoid potential bugs) is available on your server

1. Install Composer

Restler uses Composer to manage its dependencies. First, download a copy of composer.phar. It can be kept in your project folder or ideally in usr/local/bin to use it globally for all your projects. If you are on Windows, you can use the composer windows installer instead.

2. Install Restler
Option 1. Using composer create-project

You may install Restler by running the create project command in your terminal. Replace {projectName} with your actual project name. It will create a folder with that name and install Restler.

composer.phar create-project luracast/restler {projectName}

Note:-

  1. If you do not want the additional formats and BDD tools you can include --no-dev to enforce exclusion of dev packages.

  2. If you want to try the bleading edge v3 branch or any of the feature branches include 3.x-dev or dev-features/html in the above command

Option 2. Downloading from github

Once Composer is installed, download the latest version of the Restler framework and extract its contents into a directory on your server. Next, in the root of your Restler project, run the php composer.phar install (or composer install) command to install all of the framework's dependencies. This process requires Git to be installed on the server to successfully complete the installation.

If you want to update the Restler framework, you may issue the php composer.phar update command.

Note:- If are not allowed to install composer and git on your server, you can install and run them on your development machine. The resulting files and folders can be uploaded and used on the server.

3. Configure

Ideally public folder should be mapped as your web root, It is optional, but recommended to avoid exposing unneeded files and folders.

4. Try it out

Try the live examples in your localhost

5. Run some test

Update the base_url specified in behat.yml and then try the following command

behat

This will test the examples against the behaviors expected, for example

ure: Testing CRUD Example
Scenario: Creating new Author with JSON
    Given that I want to make a new "Author"
    And his "name" is "Chris"
    And his "email" is "chris@world.com"
    And the request is sent as JSON
    When I request "/examples/_007_crud/authors"
    Then the response status code should be 200
    And the response should be JSON
    And the response has a "id" property

All set, Happy Restling! :)

Quick Start Guide

Once you have got restler installed with the above steps, you can quickly create your application by following these steps

1. Write API

Create your API classes with all needed public and protected methods

2. Open the Gateway

Create the gateway (index.php) as follows

p
ire_once '../../../vendor/restler.php';
Luracast\Restler\Restler;

 new Restler();
addAPIClass('YourApiClassNameHere'); // repeat for more
handle(); //serve the response
3. Prettify URLs

Enable URL Rewriting

Make sure all the requests are routed to index.php by enabling URL Rewriting for your website

For example:-

If you are on Apache, you can use an .htaccess file such as

ctoryIndex index.php
odule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
Module>
odule mod_php5.c>
php_flag display_errors On
Module>

Note:- This requires AllowOverride to be set to All instead of None in the httpd.conf file, and might require some tweaking on some server configurations. Refer to mod_rewrite documentation for more info.

If you are on Nginx, you have to make sure you set the server_name and pass the PHP scripts to fast cgi (PHP-FPM) listening on 127.0.0.1:9000

server {
        listen        80;
        server_name   api.luracast.com; //change it to match your server name

        //... other stuff

        location ~ \.php$ {
            root           /var/www/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
            include        fastcgi_params;
        }

        //... other stuff

}

Note:- This requires PHP, PHP-FPM to be properly installed and configured. Refer to PHP FastCGI example for more info.

4. Customise

Fine tune to suit your needs

p
ire_once '../../../vendor/restler.php';
Luracast\Restler\Restler;
Luracast\Restler\Defaults;
t the defaults to match your requirements
ults::$throttle = 20; //time in milliseconds for bandwidth throttling
tup restler
 new Restler();
addAPIClass('YourApiClassNameHere'); // repeat for more
addAPIClass('Resources'); //from restler framework for API Explorer
addFilterClass('RateLimit'); //Add Filters as needed
handle(); //serve the response

If you have successfully completed Installation Step 2, you should have Restler API Explorer installed in vendor/Luracast/explorer folder. Create a symbolic link of vendor/Luracast/explorer/dist or copy the folder and name it as explorer

Place the explorer in the same folder as the index.php

Explore the api and try it out by openings explorer/index.html from the web root on your browser

Happy Exploring! :)

Note:- Using eAccelerator can make restler to fail as it removes the comments. More info can be found here

5. Annotate

Restler supports annotations in the form of PHPDoc comments for API fine tuning

They are documented in detail under Annotations

6. Authorize

In order to protect your api, authenticate and allow valid users

p
ire_once '../../../vendor/restler.php';
Luracast\Restler\Restler;
 new Restler();
addAPIClass('YourApiClassNameHere'); // repeat for more
addAuthenticationClass('CustomAuth'); //Add Authentication classes as needed
handle(); //serve the response
7. Start Production

By default Restler runs in debug mode more fine tuned for API developer, by showing detailed error messages and prettifying the api result to human readbale form

By turning on production mode you will gain some performance boost as it will cache the routes (comment parsing happens only once instead of every api call), few other files and avoid giving out debug information

p
ire_once '../../../vendor/restler.php';
Luracast\Restler\Restler;

tup restler

 new Restler(true); //turn on production mode by passing true.
 you are using file based cache (the default) make sure cache folder is
itable. when you make changes to your code make sure you delete the
outes.php inside the cache folder
.
Change Log
Restler 3.0 RC5
Restler 3.0 RC4
Restler 3.0 RC3
Restler 3.0 RC2
Restler 3.0

Restler 3.0 is completely rewritten from Restler 2.0 with best practices in mind for

Restler 3.0

Restler 2.0

Restler 2.0 is a major rewrite to use convention over configuration and it is optimized for performance. Here are some of the major changes and improvements


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.