本文主要为swagger的使用
一、swagger单独使用
代码链接:https://pan.baidu.com/s/1RFr1kr1BYZ_yPoRgBzrxKA
提取码:bh7e
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mark.zp</groupId>
<artifactId>springcloud2.0-mark-swagger</artifactId>
<version>0.0.1-SNAPSHOT</version>
<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.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- eureka服务 -->
<dependencies>
<!-- 整合web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 配置swagger,接口文档生成 -->
<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>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
bootstrap.yml
### 服务启动端口号
server:
port: 8080
### 服务别名
spring:
application:
name: swagger-server
SwaggerConfig.java
package mark.zp.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2 // 表示开启Swagger
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.basePackage("mark.zp.api")).paths(PathSelectors.any())
.build();
}
/**
* @describe:创建API文档信息
*/
private ApiInfo apiInfo() {
// 标题 title
// 描述 description
// 网址 termsOfServiceUrl
// 版本 version
return new ApiInfoBuilder().title("springcloud接口文档").description("接口文档描述")
.termsOfServiceUrl("localhost:8080").version("1.0").build();
}
}
package mark.zp.api;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
@Api("Swagger控制器")
@RestController
public class SwaggerController {
@ApiOperation(value = "演示接口")
@GetMapping("index")
public String getIndex() {
System.out.println("getIndex");
return null;
}
@ApiOperation(value = "演示接口")
@ApiImplicitParam(name = "userName",value = "用户参数信息",required = true,dataType = "String")
@PostMapping("index")
public String getMember(String userName) {
System.out.println("getMember" + userName);
return "getMember" + userName;
}
}
@SpringBootApplication
public class AppSwagger {
public static void main(String[] args) {
SpringApplication.run(AppSwagger.class, args);
}
}
启动并访问:http://localhost:8080/swagger-ui.html
二、微服务中使用swagger
代码链接:https://pan.baidu.com/s/153Vfmy_n9KbIIT_MkMvt9g
提取码:ubdn
1、在订单服务、网关服务、会员服务中添加如下
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.9.0.RELEASE</version>
</dependency>
并在以上三个项目的启动类添加@EnableSwagger2Doc,开启swagger;
2、在网关启动类中添加内部类
// 添加文档来源
@Component
@Primary
class DocmentationConfig implements SwaggerResourcesProvider {
/**
* @describe:第二个参数开头为网关配置中个服务的path
* @param:@return
* @author:赵鹏 yixuanzp@aliyun.com
* @date:2020年3月21日
*/
@Override
public List<SwaggerResource> get() {
List<SwaggerResource> list = new ArrayList<SwaggerResource>();
list.add(swaggerResource("zuul-api-member","/api-member/v2/api-docs","1.0"));
list.add(swaggerResource("zuul-api-order","/api-order/v2/api-docs","1.0"));
return list;
}
private SwaggerResource swaggerResource(String name,String location,String version){
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
}
并在会员服务于订单服务的Api类中添加@Api注解
3、启动Eureka服务,config-server服务,zuul服务,order-impl,member-impl服务
访问:http://localhost:81/swagger-ui.html 此为网关服务的地址
通过
通过下图可以调试接口