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

后端 未结 3 851
故里飘歌
故里飘歌 2021-01-11 14:20

My corresponding configuration is

fos_rest:
    view:
        view_response_listener: force

sensio_framework_extra:
    view:
        annotations: false


        
相关标签:
3条回答
  • 2021-01-11 15:14

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

    api:
        resource: "@APIBundle/Controller/"
        type:     annotation
        defaults: {_format: json} # <<<<<<<
        prefix:   /api/
    
    0 讨论(0)
  • 2021-01-11 15:14

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

    # app/config/config.yml
    fos_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.yml
    fos_rest:
        routing_loader:
            include_format:       false
    

    Have a look at the FOSRestBundle documentation for more informations.

    0 讨论(0)
  • 2021-01-11 15:19

    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

    0 讨论(0)
提交回复
热议问题