java - Swagger includePatterns()

标签 java swagger swagger-ui spring-restcontroller swagger-maven-plugin

Swagger 配置:

@EnableSwagger
@Configuration
public class SwaggerConfig {

  private SpringSwaggerConfig springSwaggerConfig;

  @Autowired
  public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {
    this.springSwaggerConfig = springSwaggerConfig;
  }

  @Bean
  public SwaggerSpringMvcPlugin swaggerSpringMvcPlugin() {

    return new SwaggerSpringMvcPlugin(springSwaggerConfig)
            .swaggerGroup("sample-app")
            .includePatterns(
                    "/account/*"
            )
            .apiInfo(apiInfo())
            .build();
  }

  private ApiInfo apiInfo() {
    ApiInfo apiInfo = new ApiInfo(
            "sample-app",
            "sample-app doc",
            "",
            "support@sample-app",
            "",
            ""
    );
    return apiInfo;
  }

休息 Controller

@RestController
@RequestMapping(value = "/account")
@Api(value = "Change Account details", description = "")
public class ChangeAccountController {

@ApiOperation(value = "Change address")
    @RequestMapping(value = "/addresschange", method = RequestMethod.POST)
    public String addressChange(HttpServletRequest httpRequest, HttpServletResponse httpResponse,
            @Valid @RequestBody User user) throws ServletException, IOException {
        // logic and return something!          
    }
}

引用:一些信息是从这里引用的:http://java.dzone.com/articles/how-configure-swagger-generate

问题/疑问:

SwaggerConfig.java 中,在 includePatterns() 方法中,当我给出模式时 作为 /account/* API 不会出现在 Swagger 输出页面中,而, 如果我将模式包含为 /account/.* 它就会出现。 为什么?在这个用例中,/account/*/account/.* 之间有什么区别?

更新:

另一个用例

@RestController
@RequestMapping(value = "/score")


@ApiOperation(value = "All score", notes = "")
@RequestMapping(value = "", method = RequestMethod.GET)
public @ResponseBody ActionResult allScores(HttpServletRequest httpRequest,
            HttpServletResponse httpResponse) {

}

如果我将模式添加为 /score/*,则 API 将出现在 Swagger 中。 我不需要将模式设置为 /score/.*

最佳答案

区别在于,如果您编写/account/* ,则意味着采用任何以“/account”开头的字符串,然后至少出现 0 次字符“/”,并且第二个模式匹配以“/account/”开头的字符串"后跟任意字符至少出现 0 次。

有关更多详细信息,请参阅例如http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

关于java - Swagger includePatterns(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30576991/

相关文章:

java - 调试 Java 的 ScriptEngine 对象

c# - 为 ASP.NET Core 中的未绑定(bind)参数添加 swagger 参数

c# - Swagger - 如何显示更复杂的响应示例 - ASP.net Core Web API

c# - Servicestack 对象参数未通过 Swagger-UI 传递给服务

swagger - 是否可以在 Swagger ui 之前添加登录页面?

java - 确定评估整数规则时的互斥

Java + jackson解析错误Unrecognized character escape

java - jTextArea 作为 IO 控制台

swagger - 使用 Swagger-Net 在 Swagger 中发送不记名 token

java - 如何在 Swagger-UI "Value"字段中仅显示必需的参数