Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/funkymed/fos_rest_starter
a fos_rest starter
https://github.com/funkymed/fos_rest_starter
Last synced: about 2 months ago
JSON representation
a fos_rest starter
- Host: GitHub
- URL: https://github.com/funkymed/fos_rest_starter
- Owner: funkymed
- License: mit
- Created: 2015-04-22T10:48:31.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-05-31T21:28:41.000Z (over 9 years ago)
- Last Synced: 2024-04-13T16:21:42.349Z (9 months ago)
- Language: PHP
- Size: 211 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bootstrap project with fost rest bundle
First create a symfony project
```
composer create-project symfony/framework-standard-edition fos_rest 2.6
```Add to composer.json the following lines
```
"stof/doctrine-extensions-bundle": "dev-master",
"jms/security-extra-bundle": "1.5.*",
"jms/di-extra-bundle": "1.5.*",
"jms/serializer-bundle": "0.13.*",
"friendsofsymfony/rest-bundle": "1.5.*",
"willdurand/rest-extra-bundle": "1.0.*",
"guzzlehttp/guzzle": "dev-master",
"nelmio/api-doc-bundle": "2.7.0",
"sami/sami": "3.0.*",
```Edit app/config/config.yml and add those lines
```
# Sensio\Bundle\FrameworkExtraBundle Configuration
sensio_framework_extra:
router: { annotations: true }
request: { converters: true, auto_convert: true }
view: { annotations: false }
cache: { annotations: true }
security: { annotations: true }#StofDoctrineExtensionsBundle Configuration
stof_doctrine_extensions:
default_locale: %locale%
orm:
default:
translatable: true
timestampable: true
sluggable: true
loggable: true
tree: true```
added the file fos_rest.yml to the app/config/config.yml
```
- { resource: fos/fos_rest.yml }
```Create a bundle (ex : ApiBundle)
Update app/AppKernel.php
```
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
new FOS\RestBundle\FOSRestBundle(),
new JMS\AopBundle\JMSAopBundle(),
new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
new JMS\DiExtraBundle\JMSDiExtraBundle($this),
new JMS\SerializerBundle\JMSSerializerBundle(),
new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
```Update app/config/routing.yml
```
#your bundle
restful_services:
resource: "@ApiBundle/Resources/config/routing.yml"
type: rest
prefix: /api
#ApiDoc
nelmio_apidoc:
resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
prefix: /api/doc
```create a routing.yml in the bundle with
create a controller named DefaultRestController.php with
```php
namespace ApiBundle\Controller;use FOS\RestBundle\Controller\FOSRestController;
use FOS\RestBundle\Controller\Annotations\RequestParam;
use FOS\RestBundle\View\View;
use FOS\RestBundle\Request\ParamFetcher;
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
use JMS\SecurityExtraBundle\Annotation\Secure;
use Symfony\Component\Validator\ConstraintViolationList;
use Tigreboite\FmBundle\Entity\Pays;
use JMS\Serializer\SerializationContext;class DefaultRestController extends FOSRestController
{/**
* Return true
*
* @ApiDoc(
* resource = true,
* description = "Return true",
* statusCodes = {
* 200 = "Returned when successful",
* 404 = "Returned when not found"
* }
* )
*
* @return View
*/
public function getTestAction()
{
$view = View::create();
$view->setData(array('test'=>true))->setStatusCode(200)
->setSerializationContext(
SerializationContext::create()
)
;return $view;
}}
```Added route to your bundle routing.
```
api_test:
type: rest
prefix: /v1
resource: ApiBundle\Controller\DefaultRestController
name_prefix: api_1_ # naming collision
```Here we go, now call the page http://fosrest.local/api/doc/