alterway/rest-problem-bundle

way to respect Problem Details for HTTP APIs RFC (http://tools.ietf.org/html/draft-nottingham-http-problem-03)

Installs: 595

Dependents: 0

Suggesters: 0

Stars: 4

Watchers: 12

Forks: 6

Open Issues: 1

Type:symfony-bundle

v0.0.1 2013-10-30 15:24 UTC

README

# RestProblemBundle

Bundle to manage Problems in API with Symfony2.

Build Status

This bundle follows the Problem Details for HTTP APIs recommandation.

## Installation

Edit your composer.json:

"require": {
    "alterway/rest-problem-bundle" : "master"
}

And run Composer:

php composer.phar update alterway/rest-problem-bundle

Enable your bundle in your AppKernel.php:

// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Alterway\Bundle\RestProblemBundle\AwRestProblemBundle(),
    );
}

Usage

use Alterway\Bundle\RestProblemBundle\Response\ProblemResponse;
use Alterway\Bundle\RestProblemBundle\Problem;

public function demoAction(Request $request)
{

    $form = // (...)

    $form->bind($request);
    if (!$form->isValid()) {
        $problem = new Problem\InvalidQueryForm($form);
        return new ProblemResponse($problem, 403);
    }
}

## Usage with annotations

Remember to enable annotations :

sensio_framework_extra:
router:  { annotations: true }
request: { converters: true }
view:    { annotations: true }
cache:   { annotations: true }

And to register the autoloader in your app/autoload.php file:

Doctrine\Common\Annotations\AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 

This will send an application/api-problem+json header:

use Alterway\Bundle\RestProblemBundle\Response\ProblemResponse;
use Alterway\Bundle\RestProblemBundle\Controller\Annotations\Problem;

/**
* @Problem
*/
public function demoAction(Request $request)
{

    $form = // (...)

    $form->bind($request);
    if (!$form->isValid()) {
        return new Problem\InvalidQueryForm($form);
    }
}

Problem's types

You need to create your own problem types. There are by default the following problems:

  • Problem\InvalidQuery
  • Problem\InvalidQueryForm
  • ...

Todo

Add controllers and route to provide problemType

## Contribute

Install dev dependencies:

php composer.phar update --dev

Run Behat:

./vendor/bin/behat @AwRestProblemBundle

Copyright

Copyright (c) 2013 La Ruche Qui Dit Oui!. See LICENSE for details.

Contributors

  • Lead: Jean-François Lépine (Halleck45)
  • Developer: Antoine Lévêque (gh0stonio)

Sponsors