Simple PHP Library for RESTful APIs
Go to file
PJ Dietz 9d9d5e3a1b Update README 2015-05-20 19:51:45 -04:00
docs Remove RTD custom theme 2015-05-20 19:23:43 -04:00
src Revise docblocks for interfaces. 2015-05-20 14:42:57 -04:00
test Router stores path variables directly as attributes by default. 2015-05-19 21:06:50 -04:00
vagrant Add home page to test site. Add autoload sandbox directory. 2015-03-11 21:34:20 -04:00
.gitattributes Add .gitattributes to remove non-essentials files from dist 2015-05-15 19:27:18 -04:00
.gitignore Remove user files from .gitignore 2015-05-15 19:10:58 -04:00
.travis.yml Update README. Add PHP 5.6 to Travis. 2015-01-21 12:56:55 -05:00
README.md Update README 2015-05-20 19:51:45 -04:00
Vagrantfile Read Vagrant host port from environment variable. 2015-03-11 15:36:49 -04:00
composer.json Change Composer package name to wellrested/wellrested 2015-05-20 18:02:28 -04:00
composer.lock Update Composer 2015-05-20 18:05:26 -04:00
phpunit.xml.dist Add integration tests to double check routing and dispatching functionality 2015-05-15 08:06:21 -04:00

README.md

WellRESTed

Build Status Documentation Status SensioLabsInsight

WellRESTed is a library for creating RESTful Web services in PHP.

Requirements

  • PHP 5.4

Install

Add an entry for "wellrested/wellrested" to your composer.json file's require property.

{
    "require": {
        "wellrested/wellrested": "~3.0"
    }
}

Documentation

See the documentation to get started.

Example

<?php

use WellRESTed\Message\Stream;
use WellRESTed\Server;

require_once "vendor/autoload.php";

// Build some middleware. We'll register these with a server below.
// We're using callables to fit this all in one example, but these
// could also be classes implementing WellRESTed\MiddlewareInterface.

// Set the status code and provide the greeting as the response body.
$hello = function ($request, $response, $next) {

    // Check for a "name" attribute which may have been provided as a
    // path variable. Use "world" as a default.
    $name = $request->getAttribute("name", "world");

    // Set the response body to the greeting and the status code to 200 OK.
    $response = $response->withStatus(200)
        ->withHeader("Content-type", "text/plain")
        ->withBody(new Stream("Hello, $name!"));

    // Propagate to the next middleware, if any, and return the response.
    return $next($request, $response);

};

// Add a header to the response.
$headerAdder = function ($request, $response, $next) {
    // Add the header.
    $response = $response->withHeader("X-example", "hello world");
    // Propagate to the next middleware, if any, and return the response.
    return $next($request, $response);
};

// Create a server
$server = new Server();

// Start each request-response cycle by dispatching the header adder.
$server->add($headerAdder);

// The header adder will propagate to this router, which will dispatch the
// $hello middleware, possibly with a {name} variable.
$server->add($server->createRouter()
    ->register("GET", "/hello", $hello)
    ->register("GET", "/hello/{name}", $hello)
);

// Read the request from the client, dispatch middleware, and output.
$server->respond();

Copyright © 2015 by PJ Dietz Licensed under the MIT license