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

Reply via email to