I would like to support specific http verbs on a given URI. For example, to
support GET and PUT for the URI /controller/action/id I have defined these
2 dedicated routes:
map.connect('/controller/action/:id', controller='controller',
action='GET_action', conditions=dict(method=['GET']))
map.connect('/controller/action/:id', controller='controller',
action='PUT_action', conditions=dict(method=['PUT']))
Issuing a GET or PUT for this (same) URI will cause the correct action to
be executed... however, if I issue a request with a different method, such
as a POST, the response is a 500 Internal Server Error. I would have
expected a 404 Not Found, as is normally returned for "no matching route".
A simple workaround (amongst other more elaborate -- and imho more
convoluted -- local dispatching mechanisms) is to follow up the above
routes with a catchall for the any other verbs:
map.connect('/controller/action/:id', controller='controller',
action='OTHER_action')
that would then be supplied as a method on controller simply to return 404:
def OTHER_action(self, id):
abort(404)
So, why the 500 and not the 404 in the first place?
Any other suggestions of how best to handle such situations?
mario
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pylons-discuss" 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/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---