On 27.04.2011, at 20:04, Fabien Potencier wrote: > On 4/27/11 5:10 PM, Lukas Kahwe Smith wrote: >> Hi, >> >> For FOSRestBundle I want to write a custom route matcher so that I can do >> more complex Accept header negotiations on a per route basis. >> Now I looked at how things are setup in the DIC and it seems there is a >> "router" service which is an alias to "router.real". >> However "router.real" seems to be used in most places rather than "router", >> which seems counter intuitive to me, as I would expect I would need to >> override the "router" service. > > Accept header negociations probably does not belongs to the Router Matcher. > Can you explain what kind of stuff you want to do? Can't you create a > listener before the request listener to do your stuff instead?
I have a listener that does this atm. However there is a severe limitation in that the route cannot really have a say in its preferences. The solution I have just allows you to set a global preference to resolves ties: Imagine a request with Accept headers that set html at 1 and json at 1. I can then configure the listener to prefer json. Imagine a request with Accept headers that set html at 1 and json at 0.5. The route prefers json. Now I could expand the current solution to allow boosting json for the entire application, but in most cases there will be a mix of formats supported unless one has an entire application dedicated to a single format. So really what is needed is a real negotiation on a per route level. Aka the client defines its preferences via the Accept header and the route defines its preferences via some configuration and then some algorithm determines the best compromise. This cannot happen before or after especially since I think there could be use cases where its determined that there is no acceptable compromise and therefore other routes should be considered. regards, Lukas Kahwe Smith [email protected] -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/symfony-devs?hl=en
