Enhance UrlHandlerFilter with ordered pattern matching and status validation #35975
+582
−92
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses issue #35882.
It does the following:
Allows for ordering handlers based on path specificity, so handlers are selected based on how well a
PathPatternmatches the request path.Validates the HTTP status code for redirect handlers, using a simple assertion to check if the code is
3xx.The changes are backwards compatible:
A new
useSpecificityOrdermethod is added to theBuilderto opt in to specificity-based ordering. Not using this method (or using a value offalse) results in the current behaviour.A new
excludemethod is added to theBuilderto optionally exclude URL handling for specific patterns. Not using this method results in the current behaviour.For the servlet implementation, the parameter of the
redirectmethod was changed from typeHttpStatustoHttpStatusCodeto align with the reactive implementation. This change will have no effect asHttpStatusCodeis implemented byHttpStatus.Feedback and edits are welcome, particularly regarding the implementation of specificity-based ordering, and the new method names (
useSpecificityOrderandexclude).