2017 © Pedro Peláez
 

library api-builder

image

briedis/api-builder

  • Thursday, October 5, 2017
  • by briedis
  • Repository
  • 3 Watchers
  • 3 Stars
  • 766 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 11 Versions
  • 1 % Grown

The README.md

api-builder for Laravel

Build passes? Latest Stable Version Latest Unstable Version Master, (*1)

Library helps you build a documentation for your api, and you can even use it to validate request parameters, (*2)

Usage

Laravel 4

  1. Add composer dependency "briedis/api-builder": "~1.0" and run composer update
  2. Add service provider Briedis\ApiBuilder\ApiBuilderLaravel4ServiceProvider
  3. Publish assets public directory: php artisan asset:publish briedis/api-builder

Laravel 5

  1. Add composer dependency "briedis/api-builder": "~1.0" and run composer update
  2. Add service provider Briedis\ApiBuilder\ApiBuilderLaravel5ServiceProvider
  3. Publish assets to public directory: php artisan vendor:publish --force --provider="Briedis\ApiBuilder\ApiBuilderLaravel5ServiceProvider" (force means that existing files will be overwritten)

Request class

use Briedis\ApiBuilder\Method;
use Briedis\ApiBuilder\StructureBuilder;

class ExampleGetUserRequest extends Method{
    const URI = 'user/get';

    const METHOD = 'GET';

    public $title = 'User information';

    public $description = 'Get user by given ids. One or multiple users can be fetched at once';

    public function getRequest(){
        return new GetUsersStructure;
    }

    public function getResponse(){
        return (new StructureBuilder)
            ->struct('users', new UserStructure, 'Array with user objects')->multiple();
    }
}

Structure classes

use Briedis\ApiBuilder\StructureBuilder;
use Briedis\ApiBuilder\StructureInterface;

class GetUsersStructure implements StructureInterface {
    /**
     * Get the structure object
     * @return \Briedis\ApiBuilder\StructureBuilder
     */
    public function getStructure(){
        return (new StructureBuilder)
            ->int('userId', 'Array of user ids you want to fetch')->multiple()
            ->int('offset', 'For paging purposes')->optional()
            ->int('count', 'Amount of users to fetch. Defaults to 20')->optional();
    }
}

class UserStructure implements StructureInterface{
    /**
     * Get User structure object
     * @return StructureBuilder
     */
    public function getStructure(){
        return (new StructureBuilder('User'))
            ->int('id', 'Unique identifier')
            ->str('username', 'Nickname that will be used in the system')
            ->str('firstName', 'Users first name')
            ->str('lastName', 'Users last name')
            ->str('gender', 'M - male, F - female')->values(['M', 'F'])->optional()
            ->int('signature', 'Provide your favorite quote or something, if you want')->optional()
            ->struct('location', new LocationStructure, 'Location object for the user')->optional()
            ->int('createdAt', 'Unix timestamp, when user has registered');
    }
}

Outputting

$presenter = new \Briedis\ApiBuilder\Presenter([
    new ExampleGetUserRequest,
    // Add request class instances as needed
]);

$presenter->setDomain('http://example/api/v1'));

echo $presenter->render();

TODO

  • Automatic route generating

The Versions

05/10 2017

dev-master

9999999-dev

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

05/10 2017

v1.2.3

1.2.3.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

02/04 2017

v1.2.2

1.2.2.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

16/03 2017

v1.2.1

1.2.1.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

15/03 2017

v1.2.0

1.2.0.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

29/04 2016

v1.1.4

1.1.4.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

29/04 2016

v1.1.3

1.1.3.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

29/04 2016

v1.1.2

1.1.2.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

27/04 2015

v1.1.1

1.1.1.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

27/04 2015

v1.1.0

1.1.0.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis

22/03 2015

v1.0.0

1.0.0.0

  Sources   Download

The Requires

 

The Development Requires

by Mārtiņš Briedis