{"id":27552452,"url":"https://github.com/lkqm/spring-api-versioning","last_synced_at":"2025-04-19T10:07:52.278Z","repository":{"id":42558590,"uuid":"202456426","full_name":"lkqm/spring-api-versioning","owner":"lkqm","description":"Simple development of multi-version api based on spring-mvc annotation via @ApiVersion, support for uri, header, param.","archived":false,"fork":false,"pushed_at":"2023-11-05T15:18:45.000Z","size":36,"stargazers_count":60,"open_issues_count":1,"forks_count":34,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-12-07T16:46:55.782Z","etag":null,"topics":["api","api-versioning","multiple-versions","spring-api-versioning","versions"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lkqm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-15T02:04:09.000Z","updated_at":"2023-11-30T07:27:05.000Z","dependencies_parsed_at":"2022-08-25T14:51:07.632Z","dependency_job_id":null,"html_url":"https://github.com/lkqm/spring-api-versioning","commit_stats":null,"previous_names":[],"tags_count":3,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkqm%2Fspring-api-versioning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkqm%2Fspring-api-versioning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkqm%2Fspring-api-versioning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkqm%2Fspring-api-versioning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lkqm","download_url":"https://codeload.github.com/lkqm/spring-api-versioning/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249672724,"owners_count":21309064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","api-versioning","multiple-versions","spring-api-versioning","versions"],"created_at":"2025-04-19T10:07:51.719Z","updated_at":"2025-04-19T10:07:52.260Z","avatar_url":"https://github.com/lkqm.png","language":"Java","readme":"# spring-api-versioning\n![Maven Central](https://img.shields.io/maven-central/v/com.github.lkqm/spring-api-versioning)\n![Travis (.org) branch](https://img.shields.io/travis/lkqm/spring-api-versioning/master)\n\nSimple development of multi-version api based on spring-mvc via @ApiVersion annotation, support for uri, header, param.\n\nSupports: JDK 1.8, spring-boot 2.x\n\n## Features\n- URI:  /v1/user/list, /v2/user/list\n- Header: /user/list, header: X-API-VERSION=1\n- Param:  /user/list?api_version=1\n\nImportant: version number use precise matching with String equals method.\n\n## Quick\n1. Add Dependency(Maven)\n    ```\n   \u003cdependency\u003e\n       \u003cgroupId\u003ecom.github.lkqm\u003c/groupId\u003e\n       \u003cartifactId\u003espring-api-versioning\u003c/artifactId\u003e\n       \u003cversion\u003e${version}\u003c/version\u003e\n   \u003c/dependency\u003e\n    ```\n    \n2. @EnableApiVersioning with Application class\n    ```\n    @SpringBootApplication\n    @EnableApiVersioning\n    public class Application {\n        public static void main(String[] args) {\n            SpringApplication.run(Application.class, args);\n        }\n    }\n    ```\n\n3. Controller\n    ```\n    @RestController\n    @RequestMapping(\"/user\")\n    @ApiVersion(\"1\")\n    public class UserController {\n    \n        @GetMapping(\"/list\")\n        public String list1() {\n            return \"list1\";\n        }\n    \n        @GetMapping(\"/list\")\n        @ApiVersion(\"1.1\")\n        public String list2() {\n            return \"list2\";\n        }\n    }\n    ```\n4. Test\n    ```\n    curl http://127.0.0.1:8080/v1/user/list\n    curl http://127.0.0.1:8080/v1.1/user/list\n    ```\n\n\n## Config properties\n```\napi.version.type=uri                # versioning implement way: uri(default), header, param\napi.version.uri-prefix=             # uri prefix, if set /api, request uri like: /api/v1/... /api/v2/...\napi.version.uri-location=           # uri version location: begin(/v1/user/list), end(/user/list/v1)\napi.version.header=X-API-VERSION    # version control http header name\napi.version.param=api_version       # version control http query string name\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkqm%2Fspring-api-versioning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flkqm%2Fspring-api-versioning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkqm%2Fspring-api-versioning/lists"}