Under v2.1.0 and earlier, strict_slashes=False could be used to make a routing rule for /foo match /foo/ as well.
This appears to have changed in 2.2.0 , I'm guessing in #2433
Example flask app:
# app.py
import flask
app = flask.Flask(__name__)
app.url_map.strict_slashes = False
@app.route("/foo")
def foo():
return "hi"
and then flask run and curl localhost:5000/foo/. Under v2.1.0 you should see hi, but under 2.2.0, a 404.
I ran into this at work, as we have an app which sets strict_slashes = False and a test in our testsuite which checks for the behavior.
I don't know that we have any clients which rely on the behavior, but others might not be so lucky.
The safety/backwards-compatibility implications of this are not something I want to argue too much. If this was considered a quirk of the router and never an intended behavior, presumably it's fine to change in v2.2.0 . Otherwise, needs a fix. 🙂
If the change is considered okay, I think it's missing from the changelog. It wasn't obvious to me why our tests failed with the updated flask/werkzeug versions from the changelogs, and I had to start looking at what merged.
Under v2.1.0 and earlier,
strict_slashes=Falsecould be used to make a routing rule for/foomatch/foo/as well.This appears to have changed in 2.2.0 , I'm guessing in #2433
Example flask app:
and then
flask runandcurl localhost:5000/foo/. Under v2.1.0 you should seehi, but under 2.2.0, a 404.I ran into this at work, as we have an app which sets
strict_slashes = Falseand a test in our testsuite which checks for the behavior.I don't know that we have any clients which rely on the behavior, but others might not be so lucky.
The safety/backwards-compatibility implications of this are not something I want to argue too much. If this was considered a quirk of the router and never an intended behavior, presumably it's fine to change in v2.2.0 . Otherwise, needs a fix. 🙂
If the change is considered okay, I think it's missing from the changelog. It wasn't obvious to me why our tests failed with the updated flask/werkzeug versions from the changelogs, and I had to start looking at what merged.