Как скрыть параметр в swagger?

Вопрос:Удалось ли кому-либо скрыть параметр из сгенерированной документации? Я нашел проблему здесь, но использование @ApiParam(access="internal", required=false) до @HeaderParam казалось не работает. Лучший ответ: Хорошо, посмотрел на модульные тесты. Сначала вам нужно определить фильтр: import com.wordnik.swagger.core.filter.SwaggerSpecFilter import com.wordnik.swagger.model.{Parameter, ApiDescription, Operation} import java.util class MySwaggerSpecFilter extends SwaggerSpecFilter{ override def isOperationAllowed(operation: Operation, api: ApiDescription, params: util.Map[String, util.List[String]], cookies:

Вопрос:

Удалось ли кому-либо скрыть параметр из сгенерированной документации? Я нашел проблему здесь, но использование @ApiParam(access=»internal», required=false) до @HeaderParam казалось не работает.

Лучший ответ:

Хорошо, посмотрел на модульные тесты. Сначала вам нужно определить фильтр:

import com.wordnik.swagger.core.filter.SwaggerSpecFilter import com.wordnik.swagger.model.{Parameter, ApiDescription, Operation} import java.util class MySwaggerSpecFilter extends SwaggerSpecFilter{ override def isOperationAllowed(operation: Operation, api: ApiDescription, params: util.Map[String, util.List[String]], cookies: util.Map[String, String], headers: util.Map[String, util.List[String]]): Boolean = true override def isParamAllowed(parameter: Parameter, operation: Operation, api: ApiDescription, params: util.Map[String, util.List[String]], cookies: util.Map[String, String], headers: util.Map[String, util.List[String]]): Boolean = { if(parameter.paramAccess == Some(«internal»)) false else true } }

И затем включите его в web.xml

<servlet> <servlet-name>DefaultJaxrsConfig</servlet-name> <servlet-class>com.wordnik.swagger.jaxrs.config.DefaultJaxrsConfig</servlet-class> … <init-param> <param-name>swagger.filter</param-name> <param-value>com.example.MySwaggerSpecFilter</param-value> </init-param> </servlet> Ответ №1

С swagger-springmvc (https://github.com/springfox/springfox) на данный момент нет возможности использовать SwaggerSpecFilter. Но он уважает аннотацию @ApiIgnore – ее можно применить к параметру метода, который не должен появляться в сгенерированных метаданных.

Ответ №2

Надеюсь, что это поможет.

Для полей

@ApiModelProperty(required = false, hidden = true) private String hiddenProperty

Для Apis

@ApiIgnore public class MyApi {}

Для параметров

public void getApi(@ApiIgnore String param){} @ApiModelProperty(hidden=»true») public String paramInsideClass Ответ №3

В реализации sprigfox-swagger2 есть аннотация @ApiModelProperty, которая делает это.

Пример:

@ApiModelProperty(required = false, hidden = true) private String internallyUsedProperty; Ответ №4

Этот ответ описывает текущее решение в springfox, используя .ignoredParameterTypes или @ApiIgnore

Ответ №5

Аннотация @ApiParam(hidden = true) разрешена проблема для меня.

def myFunc(@ApiParam(hidden = true) i: Int) = {…}

Оцените статью
Добавить комментарий