Swagger2.0集成配置
传统的API⽂档编写存在以下⼏个痛点:
对API⽂档进⾏更新的时候,需要通知前端开发⼈员,导致⽂档更新交流不及时;
API接⼝返回信息不明确
⼤公司中肯定会有专门⽂档服务器对接⼝⽂档进⾏更新。
缺乏在线接⼝测试,通常需要使⽤相应的API测试⼯具,⽐如postman、SoapUI等
接⼝⽂档太多,不便于管理
为了解决传统API接⼝⽂档维护的问题,为了⽅便进⾏测试后台Restful接⼝并实现动态的更新,因⽽引⼊Swagger接⼝⼯具。
Swagger具有以下优点
1.功能丰富:⽀持多种注解,⾃动⽣成接⼝⽂档界⾯,⽀持在界⾯测试API接⼝功能;
2.及时更新:开发过程中花⼀点写注释的时间,就可以及时的更新API⽂档,省⼼省⼒;
3.整合简单:通过添加pom依赖和简单配置,内嵌于应⽤中就可同时发布API接⼝⽂档界⾯,不需要部署独⽴服务。
springboot集成
Maven依赖信息
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<!-- 管理依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.M7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringBoot整合eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>
<!-- 注意:这⾥必须要添加,否者各种依赖有问题 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
SwaggerConfig
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
app接口测试工具// api扫包
.apis(RequestHandlerSelectors.basePackage("com.itmayiedu.api")).paths(PathSelectors.any()).build(); }
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("电商系统").description("Java分布式")
.termsOfServiceUrl("www")
// .contact(contact)
.version("1.0").build();
}
}
Zull整合Swagger管理微服务所有API
会员和订单引⼊Maven依赖
<!-- swagger-spring-boot -->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
Api接⼝扫描范围
swagger:
base-package: com.itmayeidu.api
ZuulGateway⽹关
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
@EnableSwagger2Doc
public class AppGateWay {
/
/ @EnableZuulProxy 开启⽹关代理
public static void main(String[] args) {
SpringApplication.run(AppGateWay.class, args);
}
// zuul配置能够使⽤config实现实时更新
@RefreshScope
@ConfigurationProperties("zuul")
public ZuulProperties zuulProperties() {
return new ZuulProperties();
}
// 添加⽂档来源
@Component
@Primary
class DocumentationConfig implements SwaggerResourcesProvider {
@Override
public List<SwaggerResource> get() {
List resources = new ArrayList<>();
// app-itmayiedu-order
resources.add(swaggerResource("app-itmayiedu-member", "/api-member/v2/api-docs", "2.0")); resources.add(swaggerResource("app-itmayiedu-order", "/api-order/v2/api-docs", "2.0"));
return resources;
}
private SwaggerResource swaggerResource(String name, String location, String version) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
}
}
Maven依赖信息
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论