Swagger2
1.增加 Swagger2 所需依赖,pom.xml 配置如下:
<!-- Swagger2 Begin -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- Swagger2 End -->
2.配置 Swagger2
- 注意:
RequestHandlerSelectors.basePackage("com.funtl.myshop.service")
为 Controller 包路径,不然生成的文档扫描不到接口 - 创建一个名为
Swagger2Configuration
的 Java 配置类,代码如下:
package com.muke.myshop.commons.service.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;
@Configuration
public class Swagger2Configuration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.funtl.myshop.service"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("MyShop API 文档")
.description("MyShop API 网关接口,com.muke.myshop")
.termsOfServiceUrl("com.muke.myshop")
.version("1.0.0")
.build();
}
}
3.启用 Swagger2
- Application 中加上注解
@EnableSwagger2
表示开启 Swagger
package com.muke.myshop.service.reg;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@EnableSwagger2
public class MyShopServiceRegApplication {
public static void main(String[] args) {
SpringApplication.run(MyShopServiceRegApplication.class, args);
}
}
4.使用 Swagger2
- 在 Controller 中增加
Swagger2
相关注解,代码如下:
/**
* 用户注册
*
* @param tbUser
* @return
*/
@ApiOperation(value = "用户注册", notes = "以实体类为参数,注意用户名和邮箱不要重复")
@PostMapping(value = {""})
public AbstractBaseResult reg(@ApiParam(name = "tbUser", value = "用户模型") TbUser tbUser) {
// 数据校验
AbstractBaseResult validator = validator(tbUser);
if (validator != null) {
return validator;
}
// 判断用户名是否重复
if (!tbUserService.unique("username", tbUser.getUsername())) {
return error("用户名重复,请重试", null);
}
// 判断邮箱是否重复
if (!tbUserService.unique("email", tbUser.getEmail())) {
return error("邮箱重复,请重试", null);
}
// 设置密码加密
if (StringUtils.isNotBlank(tbUser.getPassword())) {
tbUser.setPassword(DigestUtils.md5DigestAsHex(tbUser.getPassword().getBytes()));
}
// 密码为空
else {
return error("密码不可为空", null);
}
// 注册用户
TbUser user = tbUserService.save(tbUser);
if (user != null) {
response.setStatus(HttpStatus.CREATED.value());
// 发送注册成功通知到消息队列
regService.sendEmail(user);
return success(request.getRequestURI(), user);
}
return error("注册失败,请重试", null);
}
5.访问 Swagger2
- 访问地址:
http://ip:port/swagger-ui.html