您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
java中怎么集成swagger组件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。
1.引入pom.xml文件包(导入4个jar包)
注意:jdk1.8以上才能运行swagger2
<!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <!--swagger-ui--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency> <!--swagger-ui增强--> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.4</version> </dependency> <!--swagger-xml bind--> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency>
2.要想使用Swagger,必须编写一个配置类来配置 Swagger,这里的配置类如下
@Configuration
@EnableSwagger2
public class SwaggerConfig {
private String title = "标题..";
private String description = "";
private String termsOfServiceUrl = "";
private String version = "版本号..";
@Bean
public Docket createDefaultRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any())
.build().groupName("default").securitySchemes(securitySchemes()).securityContexts(securityContexts());
}
@Bean
public Docket createTestRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.ant("/test/**")).build().groupName("测试/调试").securitySchemes(securitySchemes())
.securityContexts(securityContexts());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl)
.version(version).build();
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return newArrayList(new SecurityReference("token", authorizationScopes));
}
private List<SecurityContext> securityContexts() {
return newArrayList(SecurityContext.builder().securityReferences(defaultAuth())
.forPaths(PathSelectors.regex("^(?!auth).*$")).build());
}
private List<ApiKey> securitySchemes() {
return newArrayList(new ApiKey("token", "token", "header"));
}
}3.集成RESTful风格接口示例
@Api(tags = "测试")
@RestController
public class TestController {
@ApiOperation("get方法")
@GetMapping("getInfo")
public void getInfo(){
}
}4.控制台打印路径地址(可选配置)
@Slf4j
@SpringBootApplication
public class SpringbootApplication implements ApplicationRunner {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
@Autowired
Environment environment;
@Override
public void run(ApplicationArguments args) throws Exception {
log.info("项目已启动,端口:" + environment.getProperty("local.server.port"));
log.info("swagger文档地址:http://localhost:" + environment.getProperty("local.server.port") + "/swagger-ui.html");
log.info("swagger文档地址:http://localhost:" + environment.getProperty("local.server.port") + "/doc.html");
}
}看完上述内容,你们掌握java中怎么集成swagger组件的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。