有没有人成功隐藏生成文档中的参数?我发现了一个问题here,但在@ApiParam(access="internal", required=false)
之前使用@HeaderParam
似乎无效。
答案 0 :(得分:8)
好的,看单元测试有帮助。首先,您需要定义过滤器:
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 :(得分:7)
希望这有帮助。
对于字段
@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
答案 2 :(得分:3)
目前使用swagger-springmvc(https://github.com/springfox/springfox),无法使用SwaggerSpecFilter。但它尊重@ApiIgnore注释 - 它可以应用于方法参数,该参数不应出现在生成的元数据中。
答案 3 :(得分:2)
如果您使用的是io.swagger.v3
,则应按照https://springdoc.org/migrating-from-springfox.html迁移指南中的说明使用@Parameter(hidden = true)
答案 4 :(得分:1)
在sprigfox-swagger2
实施中,有一个注释@ApiModelProperty
可以执行此操作。
示例:
@ApiModelProperty(required = false, hidden = true)
private String internallyUsedProperty;
答案 5 :(得分:0)
This回答使用.ignoredParameterTypes
或@ApiIgnore
答案 6 :(得分:0)
注释@ApiParam(hidden = true)
已解决了我的问题。
def myFunc(@ApiParam(hidden = true) i: Int) = {...}
答案 7 :(得分:0)
您可以使用以下方法注释您的字段:
@Schema(description = "foo bar.", required = false, hidden = true, example = "bar")
private String fooDtoField