【二】Spring Boot 整合Swagger
一、添加依赖
<!-- 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>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
二、新增Swagger配置
import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.List; /** * swagger 配置 * * @author yaoson * @date 2022/10/15 16:47 **/ @Configuration @EnableSwagger2 @EnableSwaggerBootstrapUI public class AdminSwaggerConfig { /** * 新增Admin模块 * * @return */ @Bean public Docket coreApi() { String moduleCode = "Admin"; String moduleName = "后台管理系统"; // 选择那些路径和api会生成document return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo(moduleName)).pathMapping("/").select() // 对所有api进行监控 .apis(RequestHandlerSelectors.any()) .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)).build() // 配置token .globalOperationParameters(setHeader()); } /** * 配置头部 * @return */ private static List<Parameter> setHeader() { ParameterBuilder tokenPar = new ParameterBuilder(); List<Parameter> pars = new ArrayList<>(); tokenPar.name("Authorization").description("token").modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); pars.add(tokenPar.build()); return pars; } private static ApiInfo apiInfo(String moduleName) { return new ApiInfoBuilder() .title(moduleName) //标题 .contact(new Contact("Yaoson","https//www.xx.com","123@qq.com"))//联系方式 .description("接口文档")//描述 .version("1.0.0")//版本 .build(); } }
三、添加接口
DTO(接口请求参数)
import com.ucontrol.commons.dto.PageDTO; import io.swagger.annotations.ApiModel; import lombok.Data; /** * @author * @date 2022/10/15 17:26 **/ @Data @ApiModel("轮播图分页列表DTO") public class CarouselPageListDTO extends PageDTO { }
分页请求参数封装类
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 分页列表DTO * * @author yaoson * @date 2022/10/15 17:24 **/ @Data @ApiModel("分页列表DTO") public class PageDTO { @ApiModelProperty(value = "当前页", required = true, example = "1") private Integer page = 1; @ApiModelProperty(value = "每页显示条数", required = true, example = "10") private Integer limit = 10; }
VO(接口返回参数)
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author * @date 2022/10/15 17:19 **/ @Data @ApiModel("轮播图分页列表VO") public class CarouselPageListVO { @ApiModelProperty("轮播图ID") private Long id; @ApiModelProperty("图片URL") private String carouselUrl; @ApiModelProperty("跳转类型:0-不跳转,1-小程序内部,2-小程序外部") private Integer skipType; @ApiModelProperty("跳转URL") private String skipUrl; }
分页结果封装类
import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; /** * 分页列表结果封装类 * * @author yaoson * @date 2022/10/15 17:14 **/ @Data @NoArgsConstructor @AllArgsConstructor public class PageResult<T> { private Integer code; private String message; private long count; private List<T> data; private Class<?> otherData; public static <T> PageResult<T> page(IPage<T> iPage){ return new PageResult<T>(200000, "访问成功", iPage.getTotal(), iPage.getRecords(), null); } public static <T> PageResult<T> page(IPage<T> iPage, Class<?> otherData){ return new PageResult<T>(200000, "访问成功", iPage.getTotal(), iPage.getRecords(), otherData); } }
ApiModel注解:定义对象名称
ApiModelProperty:定义参数名称
Controller
import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; /** * <p> * 轮播图信息 前端控制器 * </p> * * @author yaoson * @since 2022-10-15 */ @Api(tags = {"CMS管理-轮播管理"}) @RestController @AllArgsConstructor @RequestMapping("/system/carouselInfo") public class CarouselInfoController { private final CarouselInfoService carouselInfoService; @ApiOperation("轮播图分页列表") @PostMapping("/queryPageList") public PageResult<CarouselPageListVO> queryPageList(@RequestBody CarouselPageListDTO param){ return carouselInfoService.findPageList(param); } }
Api注解:定义接口名称
ApiOperation注解:定义方法名称
Service
import com.baomidou.mybatisplus.extension.service.IService;/** * <p> * 轮播图信息 服务类 * </p> * * @author yaoson * @since 2022-10-15 */ public interface CarouselInfoService extends IService<CarouselInfo> { /** * 轮播图分页查询 * @param param * @return */ PageResult<CarouselPageListVO> findPageList(CarouselPageListDTO param); }
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * <p> * 轮播图信息 服务实现类 * </p> * * @author yaoson * @since 2022-10-15 */ @Service public class CarouselInfoServiceImpl extends ServiceImpl<CarouselInfoMapper, CarouselInfo> implements CarouselInfoService { /** * 轮播图分页查询 * * @param param * @return */ @Override public PageResult<CarouselPageListVO> findPageList(CarouselPageListDTO param) { LambdaQueryWrapper<CarouselInfo> query = new LambdaQueryWrapper<>(); Page<CarouselInfo> page = new Page<>(param.getPage(), param.getLimit()); IPage<CarouselInfo> carouselInfoPage = this.page(page, query); CarouselPageListVO carouselPageListVO = null; IPage<CarouselPageListVO> resultPage = new Page<>(); List<CarouselPageListVO> resultList = new ArrayList<>(); for (CarouselInfo record : carouselInfoPage.getRecords()) { carouselPageListVO = new CarouselPageListVO(); BeanUtils.copyProperties(record, carouselPageListVO); resultList.add(carouselPageListVO); } resultPage.setRecords(resultList); resultPage.setPages(carouselInfoPage.getPages()); resultPage.setTotal(carouselInfoPage.getTotal()); resultPage.setSize(carouselInfoPage.getSize()); resultPage.setCurrent(carouselInfoPage.getCurrent()); return PageResult.page(resultPage); } }
四、效果
http://localhost:8086/swagger-ui.html#


http://localhost:8086/doc.html


本章到此结束,接下来会继续更新加强整合,尽情期待。

浙公网安备 33010602011771号