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/