2015-06-27 3 views
3

Я новичок в Swagger и внедрил интерфейс Swagger с весенним mvc, я хочу отключить интерфейс на производстве/в режиме реального времени. Я изо всех сил пытаюсь понять это.Отключить чванство весной mvc

Это то, что я использую

SwaggerConfig.java

@Configuration 
@EnableSwagger2 
public class SwaggerConfig { 


} 

RestController.java

@RestController 
    @Api(value="city", description="Operations pertaining to City Data") 
    @RequestMapping(value="/v1/city") 
    public class RestController { 

    @ApiOperation(value = "View city by stateId or stateName") 
     @RequestMapping(value="/search",method=RequestMethod.POST) 
     public ResponseEntity<Object> getCityBystateId(@RequestBody StateDto stateDto,Model model){ 
     } 
} 
+0

Хотите удалить его или установить его как недосягаемый для внешних звонков? –

+0

Да, это была целая идея, я не хотел раскрывать свои конечные точки публике на производстве. – Pulkit

+0

Затем вы можете использовать резервный прокси-сервер и фильтрованный доступ согласно шаблонам, нет? –

ответ

5

Другой способ заключается в использовании обратного прокси-сервера, чтобы отклонить доступ к Swagger Апи на производственной среде.

В этом случае ваша производственная установка точно такая же, как ваша среда разработки/тестирования (тогда она более совместима с методом DevOps), и вы можете продолжить доступ к вашему API Swagger с помощью внутренних вызовов.

+0

Я также использовал тот же подход, я заблокировал URL-адрес на HAProxy: D – Pulkit

7

Посмотрите в profile механизма Spring, который позволяет регистрировать различные бобы в различных средах

Когда вы Загрузите его в соответствии с документом, вы можете аннотировать свой класс конфигурации swagger на уровне класса, например. @Profile("dev"), что позволяет конфигурацию чванство для среды вашего выбора

@Configuration 
@EnableSwagger2 
@Profile("dev") 
public class SwaggerConfig { 


} 
+1

Это, безусловно, самое простое решение. Имейте в виду, что он работает с некоторыми типами бобов (@Configuration здесь работает и является лучшей практикой), но я видел его в других местах, где он используется на @Controller, и он там не работает. – agentgonzo

+0

Это именно то решение, которое я искал. Сначала я предположил, что '@ EnableSwagger2' должен быть указан в« классе SpringBoot »(с помощью' @ EnableAutoConfiguration' и т. Д.), Но ваш код показал мне, что я могу аннотировать мою собственную «ApiDocumentationConfiguration». Благодаря! – user3105453

+0

/swagger-ui.html доступен, но методов нет. Есть ли способ запретить URL? – gstackoverflow