{"id":24072504,"url":"https://github.com/whitedg/api-version-spring-boot-starter","last_synced_at":"2025-04-28T15:03:29.082Z","repository":{"id":57724036,"uuid":"200023556","full_name":"WhiteDG/api-version-spring-boot-starter","owner":"WhiteDG","description":"[DEPRECATED] 🆙 Versioning RESTful API by @ApiVersion","archived":false,"fork":false,"pushed_at":"2024-08-26T16:30:42.000Z","size":154,"stargazers_count":9,"open_issues_count":2,"forks_count":9,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-20T22:03:05.001Z","etag":null,"topics":["api-rest","api-versioning","spring-boot","starter"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WhiteDG.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-01T09:46:24.000Z","updated_at":"2023-11-07T02:59:35.000Z","dependencies_parsed_at":"2022-09-02T06:32:28.310Z","dependency_job_id":null,"html_url":"https://github.com/WhiteDG/api-version-spring-boot-starter","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhiteDG%2Fapi-version-spring-boot-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhiteDG%2Fapi-version-spring-boot-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhiteDG%2Fapi-version-spring-boot-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhiteDG%2Fapi-version-spring-boot-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WhiteDG","download_url":"https://codeload.github.com/WhiteDG/api-version-spring-boot-starter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233226904,"owners_count":18644309,"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-rest","api-versioning","spring-boot","starter"],"created_at":"2025-01-09T17:17:52.330Z","updated_at":"2025-01-09T17:17:53.017Z","avatar_url":"https://github.com/WhiteDG.png","language":"Java","readme":"# api-version-spring-boot-starter\n\n在用 SpringBoot 开发 RESTful API 时，如果你的 API 版本控制是在 url 中完成的，那么现在你可以尝试使用 ```@ApiVersion``` 注解帮你完成这项工作。\n\n## ```@ApiVersion``` 功能特性\n\n- 支持在类或者方法上使用\n    - 优先级：方法 \u003e 类\n    - 如果同时在类和方法上都加上了 ```@ApiVersion```,那么方法上指定的版本号会生效\n- 同个类或方法支持多版本同时生效\n    - ```@ApiVersion``` 的参数是数组，可以同时配置多个版本，例如 ```@ApiVersion({1,2})```，这样配置之后通过 v1 或者 v2 都可以访问。\n- 可配置前缀、后缀\n    - 默认前缀是 ‘v’，可以通过配置项 ```api-version.prefix``` 修改前缀。\n    - 默认不带后缀，可以通过配置项```api-version.suffix```修改后缀。\n- 使用方便，只需要一个注解\n\n\n## 使用步骤\n1. 引入依赖\n    - maven\n    ```xml\n    \u003cdependency\u003e\n    \t\u003cgroupId\u003eio.github.whitedg\u003c/groupId\u003e\n    \t\u003cartifactId\u003eapi-version-spring-boot-starter\u003c/artifactId\u003e\n    \t\u003cversion\u003e1.3\u003c/version\u003e\n    \u003c/dependency\u003e\n    ```\n    - Gradle\n    ```\n    compile group: 'io.github.whitedg', name: 'api-version-spring-boot-starter', version: '1.3'\n    ```\n\n2. 使用 ```@ApiVersion``` 注解\n\n\n```java\n\n@ApiVersion(1)\n@RestController\npublic class TestController {\n\n    @GetMapping(\"foo1\")\n    public String foo1() {\n        return \"方法没有注解使用类注解\";\n    }\n\n    @GetMapping(\"foo2\")\n    @ApiVersion(2)\n    public String foo2() {\n        return \"方法有注解使用方法注解\";\n    }\n\n    @GetMapping(\"foo3\")\n    @ApiVersion({1, 2})\n    public String foo3() {\n        return \"注解支持多版本\";\n    }\n}\n```\n\n3. 完成\n\n## swagger2 文档展示\n\n![image](https://github.com/WhiteDG/api-version-spring-boot-starter/blob/develop/image/swagger-ui2.jpg)\n\n## Demo 测试\n1. 下载源码\n2. 启动 AppTestApplication\n3. curl 调用接口测试，调用结果如下\n``` bash\n$ curl http://localhost:9090/foo\n不使用版本注解%\n\n$ curl http://localhost:9090/foo1\n{\"timestamp\":\"2019-08-03T09:34:45.621+0000\",\"status\":404,\"error\":\"Not Found\",\"message\":\"No message available\",\"path\":\"/foo1\"}%\n\n$ curl http://localhost:9090/v1/foo1\n方法没有注解使用类注解%\n\n$ curl http://localhost:9090/v2/foo2\n方法有注解使用方法注解%\n\n$ curl http://localhost:9090/v1/foo3\n注解支持多版本%\n\n$ curl http://localhost:9090/v2/foo3\n注解支持多版本%\n```\n\n## LICENSE\n```\nCopyright 2019 WhiteDG\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhitedg%2Fapi-version-spring-boot-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhitedg%2Fapi-version-spring-boot-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhitedg%2Fapi-version-spring-boot-starter/lists"}