alterway / rest-problem-bundle
way to respect Problem Details for HTTP APIs RFC (http://tools.ietf.org/html/draft-nottingham-http-problem-03)
Installs: 630
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 13
Forks: 7
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.3.3
- sensio/framework-extra-bundle: ~2.2
- symfony/symfony: ~2.2
Requires (Dev)
- behat/behat: >=2.2.2
- behat/gherkin: @dev
- behat/mink-browserkit-driver: *
- behat/mink-extension: *
- behat/mink-sahi-driver: *
- behat/sahi-client: v1.0.1
- behat/symfony2-extension: *@stable
- kriswallsmith/buzz: >=0.5
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2025-03-11 06:35:47 UTC
README
# RestProblemBundle
Bundle to manage Problems in API with Symfony2.
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)