java - 访问 Swagger ApiAuthorizationFilter 中的 @ApiOperation 属性

标签 java scala jax-rs swagger

我有一个 Jax-RS Web 服务,我使用 Swagger 对其进行记录。现在我想检查每个方法的@ApiOperation注释中的参数以进行一些过滤。

@GET
@ApiOperation(value = "a description", response = String.class, hidden=true)
public static Response get(){}

我根据这个例子创建了一个ApiAuthorizationFilterImpl:

https://github.com/wordnik/swagger-core/blob/master/samples/java-jaxrs/src/main/java/com/wordnik/swagger/sample/util/ApiAuthorizationFilterImpl.java#L60

我重写了 isOperationAllowed 方法:

public boolean isOperationAllowed(Operation operation, ApiDescription api, Map<String, List<String>> params, Map<String, String> cookies, Map<String, List<String>> headers) {

       System.out.println("params: "+params.keySet()); //<--params is empty
}

现在,当我尝试访问参数时,它是空的。 相反,我可以从 operation.parameters() 打印参数,但我也无法访问它们,因为我得到了一个带有参数的 Scala 列表。

过滤器一般是在启动 Swagger-UI 时访问,因此它似乎在我的 web.xml 中正确传递。

这对我来说是一个愚蠢的错误吗?或者我如何才能访问这些参数?

作为一种解决方法,我也不介意从 @ApiModelProperty 注释访问参数。

最佳答案

以下是访问 isOperationAllowed 方法内的 Scala 参数的示例代码:

@Override
public boolean isOperationAllowed( Operation operation, ApiDescription api, Map< String , List< String >> params, Map< String , String > cookies, Map< String , List< String >> headers ) {

    scala.collection.immutable.List< Parameter > paramList = operation.parameters();

    for ( int i = 0; i < paramList.length(); i++ ) {

        Parameter myparam = paramList.apply( i );

        if ( myparam.paramAccess().isDefined() && myparam.paramAccess().get().equals( "private" ) ) {
            return false;
        }
        else {
            return true;
        }
    }
}

我的 REST 类注释如下:

@POST
@ApiOperation( value = "create" )
@ApiImplicitParam( access = "private" )
public Response create( ... ) { ... }

关于java - 访问 Swagger ApiAuthorizationFilter 中的 @ApiOperation 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24866028/

相关文章:

java - jax-rs客户端下载文件

带参数传递的 Java 并行 for 循环

scala - 如何实现改变状态类型的参数化镜头

scala - 为什么我使用 SortedSet 时出现 "Error:...diverging implicit expansion..."?

java - Bean Validation + JAX-RS 不读取自定义 ValidationMessages.properties

Java webapps 安全约束和自定义安全提供程序

java - Solrj 日期请求

java - 无法从java代码执行终端命令

java - 在输入流上获取 NULL 指针异常

mysql - val 值 bean 是如何改变的