我按照link进行配置。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>2.7.0</version>
</dependency>
@Configuration
@Import( {springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration.class})
public class WebMvcConfig extends WebMvcConfigurerAdapter{
......
}
@RepositoryRestResource(collectionResourceRel = "mails", path = "mails")
public interface TMessageMailDao extends PagingAndSortingRepository<TMessageMail, Long>{
}
但是当我打开http://localhost:8080/swagger-ui.html时,什么都没有。
我知道springfox-data-rest仍在孵化中。这是它不起作用的原因吗?或者有什么不对吗?
答案 0 :(得分:1)
@EnableSwagger2
注释。 确保创建一个Docket
bean,如下例所示。
@Configuration
@Import({SpringDataRestConfiguration.class})
@EnableSwagger2
public class WebMvcConfig extends WebMvcConfigurerAdapter {
...
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("example")
.select()
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo("Example API", "Example API"));
}
private ApiInfo apiInfo(String title, String description) {
return new ApiInfoBuilder()
.title(title)
.description(description)
.build();
}
}
确保添加以下依赖项:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
一旦它正常工作,您的swagger-ui.html
将会显示如下:
我想扫描两个包。如何包含两个基本包而不是一个?
如果您只对包含REST控制器而不是任何存储库感兴趣,可以使用自定义方法在Docket的apis
方法中指定任意数量的包。
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("book")
.select()
.apis(exactPackages("com.basaki.controller", "com.basaki.model"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo("Example Springfox API",
"Example Springfox API"));
}
private static Predicate<RequestHandler> exactPackages(
final String... pkgs) {
return input -> {
String currentPkg =
input.declaringClass().getPackage().getName();
for (String pkg : pkgs) {
if (pkg.equals(currentPkg)) {
return true;
}
}
return false;
};
}
如果您对包含REST控制器和存储库感兴趣,则必须借助自定义方法在Docket中利用paths
方法。自定义方法采用路径正则表达式。
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("book")
.select()
.paths(matchPathRegex("/books(/|$).*",
"/booxs(/|$).*", "/tokens(/|$).*",
"/ping(/|$).*"))
.build()
.apiInfo(apiInfo("Example Springfox API",
"Example Springfox API"));
}
private static Predicate<String> matchPathRegex(final String... pathRegexs) {
return new Predicate<String>() {
@Override
public boolean apply(String input) {
for (String pathRegex : pathRegexs) {
if (input.matches(pathRegex)) {
return true;
}
}
return false;
}
};
}
答案 1 :(得分:0)
感谢Indra Basak的帮助 我的配置只有一个问题。
@Configuration
@EnableSwagger2
@Import({SpringDataRestConfiguration.class})
这三个注释必须一起使用。我在另一个配置文件中配置了@ EnableSwagger2。