2016-03-03 3 views
2

У меня есть REST API, разработанный с использованием Джерси, и мы документируем API REST через swagger-ui. К сожалению, мы не начали версировать API с первого дня. Сейчас мы пытаемся добавить управление версиями в API.Настройка версии Api с Swagger UI

Первый шаг, который я предпринимаю, - это попытка обновить версию API, отображаемую на динамически созданной странице swagger (html). Я отслеживал поток вызовов до файла swagger-ui.js, но я не могу понять, как изменить отображаемую версию API внизу динамически созданной страницы.

По умолчанию, которое в настоящее время отображается внизу, находится «API VERSION: 1.0.0».

Я кое-что прочитал о ServiceStack here, но, к сожалению, база кода, над которой я работаю, не использует ничего подобного.

Может ли кто-нибудь пожелать указать мне, где/что мне нужно изменить/обновить, чтобы обновить отображаемый номер версии API?

ответ

2

Версия 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" значение по умолчанию, но вы можете изменить его с помощью Кураж @Info аннотацию:

@SwaggerDefinition(
    info = @Info(
     description = "This is a sample server Petstore server.", 
     version = "1.0.1", 
     title = "Swagger Petstore" 

Этот документ может быть добавлен к любому классу отсканированного во время процесса автоматической настройки Swagger согласно Swagger Wiki page:

аннотаций может быть любого класса отсканированного в процессе автоматической конфигурации Swagger, то есть он не должен быть на классе JAX-RS API, но может быть просто на интерфейсе маркера/конфигурации

Вы можете найдите здесь несколько образцов: https://github.com/swagger-api/swagger-samples/tree/master/java. Некоторые используют Джерси и устанавливают версию API.

+0

Спасибо за ответ. Знаете ли вы, что мне нужно пометить с помощью @SwaggerDefinition? –

+0

Боюсь, вы должны добавить аннотацию '@ SwaggerDefinition', так как, посмотрев на' @ Info' [реализация] (https://github.com/swagger-api/swagger-core/blob/master/modules/ swagger-annotations/src/main/java/io/swagger/annotations/Info.java # L30) вы можете видеть, что он аннотируется с помощью '@Target (ElementType.ANNOTATION_TYPE)', который делает его объявлением типа. –

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

Да, я с тех пор понял это. Благодарю. На самом деле есть проблема, которую я открыл в проектах github с изменением названия и версии с помощью метода настройки объекта. Но бобы прекрасно работают. –

Смежные вопросы