如何在swagger中隐藏参数?

时间:2014-04-02 13:02:19

标签: scala rest swagger

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

8 个答案:

答案 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

描述了springfox中的当前解决方案

答案 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