2017 © Pedro Peláez
 

library micro-http

PHP HTTP routing

image

gyselroth/micro-http

PHP HTTP routing

  • Friday, March 2, 2018
  • by raffis
  • Repository
  • 2 Watchers
  • 0 Stars
  • 534 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 7 Versions
  • 28 % Grown

The README.md

Lightweight HTTP routing

Build Status Scrutinizer Code Quality Latest Stable Version GitHub release GitHub license, (*1)

Description

Requirements

The component is only >= PHP7.1 compatible., (*2)

Download

The package is available at packagist: https://packagist.org/packages/gyselroth/micro-http, (*3)

To install the package via composer execute:, (*4)

composer require gyselroth/micro-http

Documentation

Initialize router

The http router requires an array with http headers, usually this is $_SERVER and a PSR-3 compatible logger., (*5)

$router = new \Micro\Http\Router(\Psr\Log\LoggerInterface $logger, array $server, ?\Psr\Container\ContainerInterface);

Adding routes

$router = (new \Micro\Http\Router($logger))
  ->clearRoutingTable()
  ->addRoute(new \Micro\Http\Router\Route('/api/v1/user', 'MyApp\Rest\v1\User'))
  ->addRoute(new \Micro\Http\Router\Route('/api/v1/user/{uid:#([0-9a-z]{24})#}', 'MyApp\Rest\v1\User'))
  ->addRoute(new \Micro\Http\Router\Route('/api/v1$', 'MyApp\Rest\v1\Rest'))
  ->addRoute(new \Micro\Http\Router\Route('/api/v1', 'MyApp\Rest\v1\Rest'))
  ->addRoute(new \Micro\Http\Router\Route('/api$', 'MyApp\Rest\v1\Rest'));
  ->run(array $controller_params);

The router tries to map a request to the first matching route in his routing table. The request gets mappend to a class and method. Optional parameters/query string gets automatically submitted to the final controller class., (*6)

Given the routing table above and the following final controller class:, (*7)

namespace MyApp\Rest\v1;

class User
{
    /**
     * GET http://localhost/api/v1/user/540f1fc9a641e6eb708b4618/attributes
     * GET http://localhost/api/v1/user/attributes?uid=540f1fc9a641e6eb708b4618
     */
    public function getAttributes(string $uid=null): \Micro\Http\Response
    {

    }

    /**
     * GET http://localhost/api/v1/user/540f1fc9a641e6eb708b4618
     * GET http://localhost/api/v1/user?uid=540f1fc9a641e6eb708b4618
     */
    public function get(string $uid=null): \Micro\Http\Response
    {

    }

    /**
     * POST http://localhost/api/v1/user/540f1fc9a641e6eb708b4618/password / POST body password=1234
     * POST http://localhost/api/v1/user/password?uid=540f1fc9a641e6eb708b4618 / POST body password=1234
     * POST http://localhost/api/v1/user/password / POST body password=1234, uid=540f1fc9a641e6eb708b4618
     */
    public function postPassword(string $uid, string $password): \Micro\Http\Response
    {

    }

    /**
     * DELETE http://localhost/api/v1/user/540f1fc9a641e6eb708b4618/mail
     * DELETE http://localhost/api/v1/user/mail?uid=540f1fc9a641e6eb708b4618
     */
    public function deleteMail(string $uid=null): \Micro\Http\Response
    {

    }

    /**
     * DELETE http://localhost/api/v1/540f1fc9a641e6eb708b4618/mail
     * DELETE http://localhost/api/v1/user?uid=540f1fc9a641e6eb708b4618
     */
    public function delete(string $uid=null): \Micro\Http\Response
    {

    }

    /**
     * HEAD http://localhost/api/v1/user/540f1fc9a641e6eb708b4618
     * HEAD http://localhost/api/v1/user?uid=540f1fc9a641e6eb708b4618
     */
    public function headExists(string $uid=null): \Micro\Http\Response
    {

    }
}

Response

Each endpoint needs to return a Response object to the router., (*8)

/**
 * HEAD http://localhost/api/v1/user/540f1fc9a641e6eb708b4618
 * HEAD http://localhost/api/v1/user?uid=540f1fc9a641e6eb708b4618
 */
public function headExists(string $uid=null): \Micro\Http\Response
{
  if(true) {
    return (new \Micro\Http\Response())->setCode(200)->setBody('user does exists');
  } else {
    return (new \Micro\Http\Response())->setCode(404);  
  }
}

The Versions

02/03 2018

dev-master

9999999-dev http://www.github.com/gyselroth/micro-http

PHP HTTP routing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Raffael Sahli

psr-7 micro router http-message

02/03 2018

v0.0.6

0.0.6.0 http://www.github.com/gyselroth/micro-http

PHP HTTP routing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Raffael Sahli

psr-7 micro router http-message

20/02 2018

v0.0.5

0.0.5.0 http://www.github.com/gyselroth/micro-http

PHP HTTP routing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Raffael Sahli

psr-7 micro router http-message

06/02 2018

v0.0.4

0.0.4.0 http://www.github.com/gyselroth/micro-http

PHP HTTP routing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Raffael Sahli

psr-7 micro router http-message

03/02 2018

v0.0.3

0.0.3.0 http://www.github.com/gyselroth/micro-http

PHP HTTP routing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Raffael Sahli

psr-7 micro router http-message

31/01 2018

v0.0.2

0.0.2.0 http://www.github.com/gyselroth/micro-http

PHP HTTP routing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Raffael Sahli

psr-7 micro router http-message

21/11 2017

v0.0.1

0.0.1.0 http://www.github.com/gyselroth/micro-http

PHP HTTP routing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Raffael Sahli

psr-7 micro router http-message