java / expert
Snippet
Benutzerdefinierte API-Versionierung mit RequestCondition
Für komplexe API-Versionierung (z.B. über Header) ermöglicht die Implementierung von RequestCondition das Einklinken eigener Matching-Logik direkt in das RequestMappingHandlerMapping von Spring MVC.
snippet.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
Erklärung
1
getMatchingCondition(HttpServletRequest request)
Prüft, ob der aktuelle Request die Versionsanforderung basierend auf einem Header erfüllt.
2
compareTo(ApiVersionCondition other, HttpServletRequest request)
Bestimmt, welche Version Vorrang hat, wenn mehrere Mappings übereinstimmen.