使用 Swagger UI 设置 Api 版本
Setting the Api Version with Swagger UI
我有一个通过使用 Jersey 开发的 REST API,我们通过 swagger-ui 记录了 REST API。不幸的是,我们并没有从第一天开始对 API 进行版本控制。我们现在正在尝试向 API 添加版本控制。
我要采取的第一步是尝试更新由动态生成的 swagger (html) 页面显示的 API 版本。我一直跟踪调用流程到 swagger-ui.js 文件,但我不知道如何更改动态生成页面底部显示的 API 版本。
当前显示在底部的默认值是'API VERSION: 1.0.0'。
我读过一些关于 ServiceStack 的文章 here 但不幸的是,我正在处理的代码库没有使用任何此类内容。
谁能指点我 where/what 我需要 change/update 才能更新显示的 API 版本号?
API 显示在 Swagger 底部的版本 UI 来自 Swagger 文档。
这是一个 Swagger 文档示例:
{
"swagger": "2.0",
"info": {
"description": "This is a sample server Petstore server.",
"version": "1.0.0",
"title": "Swagger Petstore",
...
"version": "1.0.0"
是默认值,但您可以使用 Swagger @Info
注释更改它:
@SwaggerDefinition(
info = @Info(
description = "This is a sample server Petstore server.",
version = "1.0.1",
title = "Swagger Petstore"
,可以将此文档添加到 Swagger 自动配置过程中扫描的任何 class
The annotation can be on any class scanned during the Swagger auto-configuration process, i.e. it does not have to be on a JAX-RS API class but could just be on a marker/config interface
您可以在此处找到一些样本:https://github.com/swagger-api/swagger-samples/tree/master/java。有些人正在使用 Jersey 并设置 API 版本。
您可以添加 Bootstrap servlet 来设置 Swagger 配置 bean 的参数,如此处所述 -
https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5
非常简单 -
1. Add a servlet to set the Swagger Bootstrap properties in your deployment descriptior file.
<servlet>
<servlet-name>SwaggerBootstrap</servlet-name>
<servlet-class>com.example.util.SwaggerBootstrap</servlet-class>
<init-param>
<description>URL Pattern Mapping</description>
<param-name>paramName</param-name>
<param-value>uri value</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
2. Create a servlet and set the Bean properties as below --
public void init(ServletConfig servletConfig)
{
try {
// Setting the BeanConfig for start-up page
BeanConfig bean = new BeanConfig();
bean.setScan(true);
bean.setResourcePackage("com.example.util");
bean.setBasePath("yourBasePath"));
bean.setVersion("1.0");
bean.setTitle("title"));
bean.setDescription("description");
} catch (IOException e) {
e.printStackTrace();
}
}
我有一个通过使用 Jersey 开发的 REST API,我们通过 swagger-ui 记录了 REST API。不幸的是,我们并没有从第一天开始对 API 进行版本控制。我们现在正在尝试向 API 添加版本控制。
我要采取的第一步是尝试更新由动态生成的 swagger (html) 页面显示的 API 版本。我一直跟踪调用流程到 swagger-ui.js 文件,但我不知道如何更改动态生成页面底部显示的 API 版本。
当前显示在底部的默认值是'API VERSION: 1.0.0'。
我读过一些关于 ServiceStack 的文章 here 但不幸的是,我正在处理的代码库没有使用任何此类内容。
谁能指点我 where/what 我需要 change/update 才能更新显示的 API 版本号?
API 显示在 Swagger 底部的版本 UI 来自 Swagger 文档。
这是一个 Swagger 文档示例:
{
"swagger": "2.0",
"info": {
"description": "This is a sample server Petstore server.",
"version": "1.0.0",
"title": "Swagger Petstore",
...
"version": "1.0.0"
是默认值,但您可以使用 Swagger @Info
注释更改它:
@SwaggerDefinition(
info = @Info(
description = "This is a sample server Petstore server.",
version = "1.0.1",
title = "Swagger Petstore"
,可以将此文档添加到 Swagger 自动配置过程中扫描的任何 class
The annotation can be on any class scanned during the Swagger auto-configuration process, i.e. it does not have to be on a JAX-RS API class but could just be on a marker/config interface
您可以在此处找到一些样本:https://github.com/swagger-api/swagger-samples/tree/master/java。有些人正在使用 Jersey 并设置 API 版本。
您可以添加 Bootstrap servlet 来设置 Swagger 配置 bean 的参数,如此处所述 -
https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5
非常简单 -
1. Add a servlet to set the Swagger Bootstrap properties in your deployment descriptior file.
<servlet>
<servlet-name>SwaggerBootstrap</servlet-name>
<servlet-class>com.example.util.SwaggerBootstrap</servlet-class>
<init-param>
<description>URL Pattern Mapping</description>
<param-name>paramName</param-name>
<param-value>uri value</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
2. Create a servlet and set the Bean properties as below --
public void init(ServletConfig servletConfig)
{
try {
// Setting the BeanConfig for start-up page
BeanConfig bean = new BeanConfig();
bean.setScan(true);
bean.setResourcePackage("com.example.util");
bean.setBasePath("yourBasePath"));
bean.setVersion("1.0");
bean.setTitle("title"));
bean.setDescription("description");
} catch (IOException e) {
e.printStackTrace();
}
}