首页 文章

使用Swagger UI设置Api版本

提问于
浏览
2

我有一个通过使用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 回答

  • 2

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

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

  • 1

    显示在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. 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();
            }
        }
    

相关问题