testabit/restgeneratorbundle

REST API Generator for Symfony 2

Installs: 157

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 5

Forks: 71

Type:symfony-bundle

0.1.0 2014-07-09 15:11 UTC

This package is not auto-updated.

Last update: 2022-06-25 03:49:33 UTC


README

SensioLabsInsight

About

A CRUD like REST Generator

Features

  • Generators RESTful action from entity
  • Simplifies setting up a RESTful Controller

Installation

Require the "voryx/restgeneratorbundle" package in your composer.json and update your dependencies.

$ php composer.phar require voryx/restgeneratorbundle dev-master

Add the VoryxRestGeneratorBundle to your application's kernel along with other dependencies:

public function registerBundles()
{
    $bundles = array(
        //...
          new Voryx\RESTGeneratorBundle\VoryxRESTGeneratorBundle(),
          new FOS\RestBundle\FOSRestBundle(),
          new JMS\SerializerBundle\JMSSerializerBundle($this),
          new Nelmio\CorsBundle\NelmioCorsBundle(),
        //...
    );
    //...
}

Configuration

This bundle depends on a number of other symfony bundles, so they need to be configured in order for the generator to work properly

framework:
    csrf_protection: false #only use for public API

fos_rest:
    routing_loader:
        default_format: json
    param_fetcher_listener: true
    body_listener: true
    #disable_csrf_role: ROLE_USER
    body_converter:
        enabled: true
    view:
        view_response_listener: force

nelmio_cors:
    defaults:
        allow_credentials: false
        allow_origin: []
        allow_headers: []
        allow_methods: []
        expose_headers: []
        max_age: 0
    paths:
        '^/api/':
            allow_origin: ['*']
            allow_headers: ['*']
            allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
            max_age: 3600

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

Generating the Controller

Right now, the generator uses forms created by the doctrine generator. You must create these to use the generated controller. (If you don't create them prior to running the voryx:generate:rest command, you will get an error, but it will still work if you just create them afterwards)

$ php app/console doctrine:generate:form AcmeDemoBundle:Post

Generate the REST controller

$ php app/console voryx:generate:rest

This will guide you through the generator which will generate a RESTful controller for an entity.

You will still need to Add a route for each generated entity: (Hopefully this will be added to the generator soon)

api_posts:
    type:     rest
    resource: "@AcmeDemoBundle/Controller/PostController.php"
    prefix: /api

Related Entities

If you want the form to be able to convert related entities into the correct entity id on POST, PUT or PATCH, use the voryx_entity form type

#Form/PostType()

    ->add(
        'user', 'voryx_entity', array(
            'class' => 'Acme\Bundle\Entity\User'
        )
    )