This version is still in development and is not considered stable yet. For the latest stable version, please use Spring Framework 6.2.8!

API Versioning

Spring MVC supports API versioning. This section provides an overview of the support and underlying strategies.

Please, see also related content in:

Client support for API versioning is available also in RestClient, WebClient, and HTTP Service clients, as well as for testing in MockMvc and WebTestClient.

ApiVersionStrategy

This is the central strategy for API versioning that holds all configured preferences related to versioning. It does the following:

ApiVersionStrategy helps to map requests to @RequestMapping controller methods, and is initialized by the MVC config. Typically, applications do not interact directly with it.

ApiVersionResolver

This strategy resolves the API version from a request. The MVC config provides built-in options to resolve from a header, from a request parameter, or from the URL path. You can also use a custom ApiVersionResolver.

ApiVersionParser

This strategy helps to parse raw version values into Comparable<?>, which helps to compare, sort, and select versions. By default, the built-in SemanticApiVersionParser parses a version into major, minor, and patch integer values. Minor and patch values are set to 0 if not present.

Validation

If a request version is not supported, InvalidApiVersionException is raised resulting in a 400 response. By default, the list of supported versions is initialized from declared versions in annotated controller mappings, but you can turn that off through a flag in the MVC config, and use only the versions configured explicitly in the config.

By default, a version is required when API versioning is enabled, and MissingApiVersionException is raised resulting in a 400 response if not present. You can make it optional in which case the most recent version is used. You can also specify a default version to use.

ApiVersionDeprecationHandler

This strategy can be configured to send hints and information about deprecated versions to clients via response headers. The built-in StandardApiVersionDeprecationHandler can set the "Deprecation" "Sunset" headers and "Link" headers as defined in RFC 9745 and RFC 8594. You can also configure a custom handler for different headers.

Request Mapping

ApiVersionStrategy supports the mapping of requests to annotated controller methods. See API Version for more details.