2014-04-02 1577 views

回答

7

好吧,看單元測試幫助。首先,你需要定義過濾器:在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> 
2

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 
    } 
} 

,然後啓用它與有沒有辦法用SwaggerSpecFilter時刻招搖,用SpringMVC(https://github.com/springfox/springfox)。但它遵守@ApiIgnore註釋 - 它可以應用於不應出現在生成的元數據中的方法參數。

1

sprigfox-swagger2實現中有一個註釋@ApiModelProperty這樣做。

例子:

@ApiModelProperty(required = false, hidden = true) 
private String internallyUsedProperty; 
0

This答案描述了使用.ignoredParameterTypes@ApiIgnore

2

希望這有助於在springfox當前的解決方案。

字段的

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

原料藥

@ApiIgnore 
public class MyApi {} 

對於參數

public void getApi(@ApiIgnore String param){} 

@ApiModelProperty(hidden="true") 
public String paramInsideClass