如何在swagger中隐藏参数?

eug*_*ied 8 rest scala swagger

有没有人成功隐藏生成的文档中的参数?我在这里发现了一个问题,但@ApiParam(access="internal", required=false)以前使用@HeaderParam似乎没有用.

Ron*_*ley 11

希望这可以帮助。

对于领域

@ApiModelProperty(required = false, hidden = true)
private String hiddenProperty
Run Code Online (Sandbox Code Playgroud)

对于Apis

@ApiIgnore
public class MyApi {}
Run Code Online (Sandbox Code Playgroud)

对于参数

public void getApi(@ApiIgnore String param){}

@ApiModelProperty(hidden="true")
public String paramInsideClass
Run Code Online (Sandbox Code Playgroud)


小智 10

如果您正在使用io.swagger.v3,您应该@Parameter(hidden = true)按照迁移指南中的描述使用https://springdoc.org/migration-from-springfox.html


eug*_*ied 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
  }
}
Run Code Online (Sandbox Code Playgroud)

然后启用它 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>
Run Code Online (Sandbox Code Playgroud)