2017 © Pedro Peláez
 

library nette-api

Build REST APIs with Nette Framework

image

tripomatic/nette-api

Build REST APIs with Nette Framework

  • Monday, May 2, 2016
  • by JanJakes
  • Repository
  • 10 Watchers
  • 5 Stars
  • 1,090 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 4 % Grown

The README.md

Tripomatic\NetteApi

Build REST APIs with Nette Framework., (*1)

Tripomatic\NetteApi is a very light base for building REST APIs with Nette Framework. It provides an extremely minimalist base presenter, an error presenter that ensures returning a valid JSON on any error and takes care of logging, and a handy JSON prettifier for testing APIs in browser that does not force you to hide your Tracy panel., (*2)

Installation

Install Tripomatic\NetteApi using Composer:, (*3)

$ composer require tripomatic/nette-api

Quickstart

Add Tripomatic\NetteApi extension in your NEON config:, (*4)

extensions:
    api: Tripomatic\NetteApi\DI\ApiExtension

Create your first RESTful presenter inherited from minimalist Tripomatic\NetteApi\Application\Presenter:, (*5)

use Nette\Application\Request;
use Tripomatic\NetteApi\Application\Presenter;
use Tripomatic\NetteApi\Application\Responses\JsonResponse;

class WeatherPresenter extends Presenter
{
    public function get(Request $request)
    {
        $city = $request->getParameter('city');

        $data = ...; // get weather data for the city
        return new JsonResponse($data);
    }

    // implement ohter REST methods similarly
}

Configuration

Tripomatic\NetteApi does not require any additional configuration, it sets up two handy defaults: - An error presenter is set up that ensures the API returns a valid JSON in all error situations. - API responses are prettified by default when running in debug mode, Tracy panel is also visible., (*6)

This behavior can be easily overridden in corresponding extension's section:, (*7)

api:
    prettify: %debugMode% # can be set to TRUE/FALSE
    errorPresenter: NetteApi:Error
    mapping:
        NetteApi: 'Tripomatic\NetteApi\Application\Presenters\*Presenter'

Bootsraping

If you need some help with writing your application bootsrap here is an example that we use in Tripomatic:, (*8)

require __DIR__ . '/../vendor/autoload.php';

$tomDebug = getenv('TOM_DEBUG') === 'TRUE' && isset($_COOKIE['tom_api_debug']);
$tomLogDir = getenv('TOM_LOG_DIR') ?: '/var/log/tripomatic/some-api';
$tomTmpDir = getenv('TOM_TMP_DIR') ?: '/var/tmp/some-api';
$tomConfigFile = getenv('TOM_CONFIG_FILE') ?: __DIR__ . '/../config/config.local.neon';

$configurator = new Nette\Configurator;
$configurator->setDebugMode($tomDebug);
$configurator->enableDebugger($tomLogDir);

$configurator->setTempDirectory($tomTmpDir);
$configurator->addConfig(__DIR__ . '/../config/config.neon');
if (file_exists($tomConfigFile)) {
    $configurator->addConfig($tomConfigFile);
}

return $configurator->createContainer();

Yes, with Nette Framework it can really be that minimalist. Everything else can be achieved with Nette's great Dependency Injection implementation. For more details see Nette Framework documentation., (*9)

License

Tripomatic\NetteApi is licensed under MIT., (*10)

The Versions

02/05 2016

dev-master

9999999-dev https://github.com/tripomatic/nette-api

Build REST APIs with Nette Framework

  Sources   Download

MIT

The Requires

 

by Jan Jakes

api rest nette

21/10 2015

dev-extensibility

dev-extensibility https://github.com/tripomatic/nette-api

Build REST APIs with Nette Framework

  Sources   Download

MIT

The Requires

 

by Jan Jakes

api rest nette

21/10 2015

dev-bugfixes

dev-bugfixes https://github.com/tripomatic/nette-api

Build REST APIs with Nette Framework

  Sources   Download

MIT

The Requires

 

by Jan Jakes

api rest nette