java / expert
Snippet
Custom API Versioning with RequestCondition
For complex API versioning (e.g., via custom headers), implementing RequestCondition allows you to plug custom matching logic directly into Spring MVC's RequestMappingHandlerMapping.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class ApiVersionCondition implements RequestCondition<ApiVersionCondition> {private final String version;@Overridepublic ApiVersionCondition getMatchingCondition(HttpServletRequest request) {String header = request.getHeader("X-API-VERSION");return version.equals(header) ? this : null;}@Overridepublic int compareTo(ApiVersionCondition other, HttpServletRequest request) {return other.version.compareTo(this.version);}// combine method omitted for brevity}
spring
Breakdown
1
getMatchingCondition(HttpServletRequest request)
Checks if the current request satisfies the version requirement based on a header.
2
compareTo(ApiVersionCondition other, HttpServletRequest request)
Determines which version takes precedence if multiple mappings match.