Search code examples
symfonyfosrestbundle

Symfony with combination of Basic Routing and REST


My existing application requires additional RESTful endpoints.

I've added FOSRestBundle with the following configuration.

fos_rest:
   param_fetcher_listener: true
   view:
   mime_types:
       json: ['application/json', 'application/json;version=1.0', 'application/json;version=1.1', 'application/json;version=1.2']
   view_response_listener: 'force'
   formats:
       xml:  false
       json: true
   templating_formats:
       html: false
   format_listener:
       rules:
         - priorities: [json, xml]
         - fallback_format: json
   exception:
       codes:
         'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404
         'Doctrine\ORM\OptimisticLockException': HTTP_CONFLICT
       messages:
       'Symfony\Component\Routing\Exception\ResourceNotFoundException': true
   allowed_methods_listener: true
   access_denied_listener:
       json: true
   body_listener: true
   routing_loader:
       default_format: json
       include_format: false

The REST requests are fine but the basic routing now doesn't work

With the following error

This page contains the following errors:

error on line 11 at column 92: EntityRef: expecting ';'
Below is a rendering of the page up to the first error.

Basically I just want to combine the basic routing with rest


Solution

  • You can solve this by disabling the format listener for your specific html routes (see http://symfony.com/doc/current/bundles/FOSRestBundle/format_listener.html#disabling-the-format-listener-via-rules)

    So, add a rule for the format listener in your config.yml like this:

    format_listener:
        rules:
            - { path: '^/my-html-routes', stop: true }
            - { path: '^/api', priorities: ['json', 'xml'], fallback_format: json }