SpringBoot整合Swagger2
1.创建SpringBoot项目
2.pom文件中导入相关的依赖
<!--swagger文档功能-->
<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>
3.开发者提供一个Docket的Bean
package com.ytzl.springboot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 作者: fyq
* 时间: 2020/8/21 0021 15:47
* 描述: swagger文档注释
*/
@Component
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.basePackage("com.ytzl.springboot.controller"))//相关控制器路径
.paths(PathSelectors.any())
.build().apiInfo(new ApiInfoBuilder()
.title("SpringBoot整合Swagger")
.description("详细信息")
.version("9.0")
.contact(new Contact("SpringBoot整合Swagger","blog.csdn.net","aaa@gmail.com"))
.license("The Apache License")
.licenseUrl("http://www.baidu.com")
.build());
}
}
启动项目,输入http://localhost:8080/swagger-ui.html,若出现以下界面,则表示配置成功
4.改造User实体类和UserController控制器
- @Api注解可以用来标记当前Controller的功能(类的注释)。
- @ApiOperation注解用来标记一个方法的作用(方法的注释)。
- @ApiImplicitParam注解用来描述一个参数,可以配置参数的中文含义,也可以给参数设置默认值,这样在接口测试的时候可以避免手动输入(字段的注释)。
- @ApiImplicitParams是@ApiImplicitParam的复数,@ApiImplicitParam需要放在@ApiImplicitParams中(多个字段的注释)。
- 需要注意的是,@ApiImplicitParam注解中虽然可以指定参数是必填的,但是却不能代替@RequestParam(required= true),前者的必填只是在Swagger2框架内必填,抛弃了Swagger2,这个限制就没用了,所以假如开发者需要指定一个参数必填,@RequestParam(required = true)注解还是不能省略。
改造UserController控制器
package com.ytzl.springboot.controller;
import com.ytzl.springboot.entity.User;
import com.ytzl.springboot.service.UserService;
import com.ytzl.springboot.utils.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
/**
* 作者: fyq
* 时间: 2020/8/20 0020 10:05
* 描述: 控制登录
*/
@RestController
@Slf4j
@Api(tags = "登录管理相关接口")
public class LoginController {
@Resource
private UserService userService;
@GetMapping("/user/login")
@ApiOperation("登录接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名"),
@ApiImplicitParam(name = "password", value = "用户密码")
})
public R login(@RequestParam("username")String userName, @RequestParam("password")String password, HttpSession session) throws Exception {
log.info(userName);
log.info(password);
User user=userService.userLogin(userName,password);
if (user!=null){
session.setAttribute("admin",userName);
return R.success("index");
}else {
return R.success("login");
}
}
@PostMapping("/hello")
@ApiOperation("登录成功返回首页接口")
public String returnPageIndex() {
return "index.html";
}
}
改造User实体类
package com.ytzl.springboot.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 用户表实体类
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel
public class User implements Serializable {
@ApiModelProperty(value = "用户id")
private Integer id;
@ApiModelProperty(value = "登录名")
private String userCode;
@ApiModelProperty(value = "用户名")
private String userName;
@ApiModelProperty(value = "用户密码")
private String userPassword;
@ApiModelProperty(value = "用户性别")
private Integer gender;
@ApiModelProperty(value = "出生日期")
private Date birthday;
@ApiModelProperty(value = "手机号码")
private String phone;
@ApiModelProperty(value = "家庭住址")
private String address;
@ApiModelProperty(value = "用户角色")
private Integer userRole;
@ApiModelProperty(value = "创建者")
private Integer createdBy;
@ApiModelProperty(value = "创建时间")
private Date creationDate;
@ApiModelProperty(value = "修改者")
private Integer modifyBy;
@ApiModelProperty(value = "修改时间")
private Date modifyDate;
@ApiModelProperty(value = "身份证路径")
private String idPicPath;
@ApiModelProperty(value = "工作证路径")
private String workPicPath;
}
5.查看是否配置成功