使用Swagger UI设置API版本

6
我有一个通过Jersey开发的REST API,我们通过swagger-ui文档化REST API。不幸的是,我们没有从第一天开始版本控制API。现在我们正在尝试向API添加版本控制。
我正在采取的第一步是尝试更新由动态生成的swagger(html)页面显示的API版本。我已经追踪了调用流程,一直到swagger-ui.js文件,但我无法弄清楚如何更改动态生成页面底部显示的API版本。
目前在底部显示的默认版本为“ API版本:1.0.0”。
我读到了关于ServiceStack here的一些内容,但不幸的是,我正在处理的代码库没有使用任何这样的东西。
请问是否有人可以指出我需要在哪里/更改/更新以更新显示的API版本号?
3个回答

3

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自动配置过程中添加到任何一个类,根据Swagger Wiki页面的说明:

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

你可以在这里找到一些示例。其中一些使用Jersey并设置API版本。

谢谢您的回复。您知道我需要在@SwaggerDefinition标记什么吗? - Hen
很抱歉,您必须添加@SwaggerDefinition注释,因为通过查看@Info实现,您可以看到它被注释为@Target(ElementType.ANNOTATION_TYPE),这使其成为类型声明。 - Navid Shakibapour

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

是的,我已经解决了。谢谢。实际上,我在项目的Github上开了一个问题,关于通过对象配置方法更改标题和版本的问题。但是Beans工作得很好。 - Hen

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接