0 day streak
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;
@Override
public ApiVersionCondition getMatchingCondition(HttpServletRequest request) {
String header = request.getHeader("X-API-VERSION");
return version.equals(header) ? this : null;
}
@Override
public 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.