使用Swagger UI设置Api版本

时间:2016-03-03 21:26:17

标签: api rest swagger swagger-ui

我有一个通过使用Jersey开发的REST API,我们通过swagger-ui记录REST API。不幸的是,我们没有从第1天开始对API进行版本控制。我们现在正在尝试向API添加版本控制。

我正在采取的第一步是尝试更新动态生成的swagger(html)页面显示的API版本。我已经将调用流程一直跟踪到swagger-ui.js文件,但我无法弄清楚如何在动态生成的页面底部更改显示的API版本。

当前显示在底部的默认值是'API VERSION:1.0.0'。

我已经阅读了一些关于ServiceStack here的内容,但不幸的是我正在处理的代码库没有使用任何类型的内容。

有人可以请我指出我需要更改/更新的位置/更新以更新显示的API版本号吗?

3 个答案:

答案 0 :(得分:2)

Swagger UI底部显示的API版本来自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 Wiki page,可以将此文档添加到在Swagger自动配置过程中扫描的任何类:

  

注释可以在Swagger自动配置过程中扫描的任何类上,即它不必在JAX-RS API类上,但可以在标记/配置接口上

您可以在此处找到一些示例:https://github.com/swagger-api/swagger-samples/tree/master/java。有些人正在使用Jersey并设置API版本。

答案 1 :(得分:1)

您可以添加一个Bootstrap servlet来设置Swagger配置bean的参数,如下所述 -

https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5

答案 2 :(得分:1)

这很直接 -

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();
        }
    }