Search code examples
pythonfalconframework

Python Falcon Framework: optional URI parameters


Is there a way to define optional path parameters in the Falcon web framework? Currently, I'm declaring separate routes for modifying the same resource.

app.add_route('/users/', users_api_post)
app.add_route('/users/{id}', users_api_put)

PS: There's a similar question on SO for Flask framework.


Solution

  • It seems that you are using different HTTP methods, so it seems simpler to use differente functions (on_put and on_post).

    But if you are using the same HTTP method, this worked for me:

    class EventsResource(object):
        def on_get(self, req, resp, app_id, timeanddate=None):
            if timeanddate:
                ...
            else:
                ...
    
    app.add_route('/events/{app_id}', EventsResource())
    app.add_route('/events/{app_id}/{timeanddate}', EventsResource())
    

    Hope this helps...