-
Notifications
You must be signed in to change notification settings - Fork 888
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Modify route_prefix_context
to preserve leading slash
#3758
Comments
Similar to what I said in #2143 if you wish to submit a fix to normalize pyramid's internal representation of the path I think that's fine to do. Considering WSGI PATH_INFO begins with a I would recommend instead that cornice just normalize it itself since pyramid isn't making that guarantee right now that |
I'm not sure if there are any use cases where users would rely on routes that would not have the prefix slash, for the same reason that it is not guaranteed right now. At the very least, I couldn't see any side effect by replacing |
It’s a general problem with any route, not just the route prefix iirc. You can just |
From what I see in pyramid/src/pyramid/config/routes.py Lines 413 to 419 in 72f6185
Any necessary / striping is already handled internally by add_route .
Therefore, it seems even more appropriate to avoid striping in pyramid/src/pyramid/config/routes.py Line 602 in 72f6185
Thoughts? |
Feature Request
Is your feature request related to an issue? Please describe.
When
route_prefix_context
is used to apply a prefix on various routes, the suppliedroute_prefix
gets stripped to remove any leading/training slashes. Provided that Pyramid handles/prefix/route
andprefix/route
the same way, it should not strip the leading slash (it is fine to strip the training one to allow addition of more routes after).This was highlighted a while back in #2143, but not addressed further.
When working with utilities like https://github.com/Cornices/cornice and https://github.com/Cornices/cornice.ext.swagger, it is possible to define a
Service
that uses theprefix_route
to obtain the correct path for the OpenAPI rendering. Becauseroute_prefix_context
strips the path, it is not generating the intended path.Describe the solution you'd like
Modify this line:
pyramid/src/pyramid/config/routes.py
Line 602 in 72f6185
When using
rstrip
andwith config.route_prefix_context("/ogcapi")
, the routes below get rendered correctly.They behave and respond exactly the same way as if the path were stripped from the leading
/
.With the current
strip
, all leading/
are lost, creating inconsistent paths:Describe alternatives you've considered
Override the
pyramind.config.Configurator.route_prefix_context
method.While this works, it is a dirty workaround as I have to duplicate the code to keep all the other
self.begin()
, etc. calls.Additional context
This is where the supplied
route_prefix
is relevant in the package that uses it for eventual OpenAPI generation :https://github.com/Cornices/cornice/blob/abfcfd9eeefaf281237ba84a3b90ef5ee0698aa9/src/cornice/pyramidhook.py#L169-L183
The text was updated successfully, but these errors were encountered: