How to specify default format for FOS\RestBundle to json? How to specify default format for FOS\RestBundle to json? symfony symfony

How to specify default format for FOS\RestBundle to json?


The final answer is much easier and is irrelevant to FOS\RestBundle:

api:    resource: "@APIBundle/Controller/"    type:     annotation    defaults: {_format: json} # <<<<<<<    prefix:   /api/


You may specify a default_format that the routing loader will use for the _format parameter if none is specified.

# app/config/config.ymlfos_rest:    routing_loader:        default_format: json

By default, routes are generated with {_format} string. If you want to get clean urls (/jobs instead /jobs.{_format}) then all you have to do is add some configuration:

# app/config/config.ymlfos_rest:    routing_loader:        include_format:       false

Have a look at the FOSRestBundle documentation for more informations.


I couldn't test this solution myself but following the documentation it seems that you can use a default format by giving rules on path

config.yml

fos_rest:    format_listener:        rules:            # setting fallback_format to json means that instead of considering            # the next rule in case of a priority mismatch, json will be used            -                path: '^/'                host: 'api.%domain%'                priorities: ['json', 'xml']                fallback_format: json                prefer_extension: false

With such, a request made with Accept-headers containing

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json

Will result in a json Request format