https://github.com/lkqm/spring-api-versioning
Simple development of multi-version api based on spring-mvc annotation via @ApiVersion, support for uri, header, param.
https://github.com/lkqm/spring-api-versioning
api api-versioning multiple-versions spring-api-versioning versions
Last synced: about 2 months ago
JSON representation
Simple development of multi-version api based on spring-mvc annotation via @ApiVersion, support for uri, header, param.
- Host: GitHub
- URL: https://github.com/lkqm/spring-api-versioning
- Owner: lkqm
- License: mit
- Created: 2019-08-15T02:04:09.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2023-11-05T15:18:45.000Z (over 1 year ago)
- Last Synced: 2023-12-07T16:46:55.782Z (over 1 year ago)
- Topics: api, api-versioning, multiple-versions, spring-api-versioning, versions
- Language: Java
- Homepage:
- Size: 35.2 KB
- Stars: 60
- Watchers: 2
- Forks: 34
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# spring-api-versioning

Simple development of multi-version api based on spring-mvc via @ApiVersion annotation, support for uri, header, param.
Supports: JDK 1.8, spring-boot 2.x
## Features
- URI: /v1/user/list, /v2/user/list
- Header: /user/list, header: X-API-VERSION=1
- Param: /user/list?api_version=1Important: version number use precise matching with String equals method.
## Quick
1. Add Dependency(Maven)
```
com.github.lkqm
spring-api-versioning
${version}
```
2. @EnableApiVersioning with Application class
```
@SpringBootApplication
@EnableApiVersioning
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```3. Controller
```
@RestController
@RequestMapping("/user")
@ApiVersion("1")
public class UserController {
@GetMapping("/list")
public String list1() {
return "list1";
}
@GetMapping("/list")
@ApiVersion("1.1")
public String list2() {
return "list2";
}
}
```
4. Test
```
curl http://127.0.0.1:8080/v1/user/list
curl http://127.0.0.1:8080/v1.1/user/list
```## Config properties
```
api.version.type=uri # versioning implement way: uri(default), header, param
api.version.uri-prefix= # uri prefix, if set /api, request uri like: /api/v1/... /api/v2/...
api.version.uri-location= # uri version location: begin(/v1/user/list), end(/user/list/v1)
api.version.header=X-API-VERSION # version control http header name
api.version.param=api_version # version control http query string name
```