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