with tutorial php symfony symfony-2.3 fosrestbundle

php - tutorial - ¿Cómo especificar el formato predeterminado para FOS / RestBundle a json?



fosrestbundle tutorial (3)

Mi configuración correspondiente es

fos_rest: view: view_response_listener: force sensio_framework_extra: view: annotations: false

y realmente molesta especificar la ruta como

@Route("/jobs", defaults={ "_format" = "json" })

cada vez.

Entonces, ¿es posible especificarlo en algún lugar para ser asumido por defecto?

PD:

Si defaults={ "_format" = "json" } y llamo al punto de defaults={ "_format" = "json" } /jobs recibo una excepción

Unable to find template "APIBundle:Jobs:post.html.twig".

PPS:

routing_loader: default_format: json

no funcionará porque solo se usa para la generación automática de rutas.


La respuesta final es mucho más fácil y es irrelevante para FOS / RestBundle:

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


No pude probar esta solución yo mismo, pero siguiendo la documentación parece que puede usar un formato predeterminado dando reglas en el camino

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

Con tal, una solicitud hecha con Accept-headers contienen

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

Dará como resultado un formato de solicitud json


Puede especificar un default_format que el cargador de enrutamiento usará para el parámetro _format si no se especifica ninguno.

# app/config/config.yml fos_rest: routing_loader: default_format: json

Por defecto, las rutas se generan con la cadena {_format}. Si quiere obtener urls limpias ( /jobs en /jobs.{_format} lugar /jobs.{_format} ), entonces todo lo que tiene que hacer es agregar alguna configuración:

# app/config/config.yml fos_rest: routing_loader: include_format: false

Eche un vistazo a la documentación de FOSRestBundle para obtener más información.