知识改变命运! SpringBoot系列16-Spring boot2x快速整合swagger2(Open Api3注解版)_猿份哥-lskyf博客社区

SpringBoot系列16-Spring boot2x快速整合swagger2(Open Api3注解版)

猿份哥 1年前 ⋅ 1509 阅读 ⋅ 0 个赞

前言:为什么要使用swagger

传统的web开发,前端和后端的HTTP接口文档交互都是使用word文档记录,存在不仅限于这些问题;不能时时更新,不易于传输etc. swagger2可以使用配置文件的方式和注解的方式生成HTTP请求文档代码各有优缺点;可根据各自的情况选择。此处demo使用注解的方式

工程maven的pom文件引入swagger2的配置

     <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
     <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger2</artifactId>
         <version>2.9.2</version>
     </dependency>

     <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
     <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger-ui</artifactId>
         <version>2.9.2</version>
     </dependency>



说明:springfox-swagger2是swagger2的基础API;springfox-swagger-ui是swagger的图形界面支撑API

配置SwaggerConfig.java装载配置

@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.yuanfenge.demo.controller"))//swagger文档扫描包
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("Spring boot2x快速整合swagger2(Open Api3注解版)")//文档标题
                .license("协议")
                .licenseUrl("https://www.lskyf.com")
                .contact(new Contact("猿份哥","https://www.lskyf.com","zswdxl_111@sina.com"))//文档联系人信息
                .version("1.0")//文档版本号
                .build();
    }
}

用户请求参数类

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value="用户model",description="请求参数类" )
public class User implements Serializable {

   @ApiParam("用户ID编号")
   private Integer id;
   @ApiParam("用户名")
   private String name;
   @ApiParam("年龄")
   private int age;
}

说明:@ApiModel 标注请求参数类 @ApiParam 标注单个请求的参数 @ApiImplicitParam: 标注一个请求参数 @ApiImplicitParams: 标注多个请求参数 @ApiOperation: 标注接口名称

测试controller

/**
 * @auth 猿份哥
 * @description
 * @createTime 2020 - 8 - 2 14:436
 */
@Slf4j
@RestController
@RequestMapping("/user")
public class TestController {

    @ApiOperation(value="根据id查询用户信息",notes = "id必需是数字")
    @ApiResponses({@ApiResponse(code=400,message="id不能为空")})
    @GetMapping("/info")
    public ResponseEntity info(@ApiParam(value = "ID编号",required = true) @RequestParam("id") Integer id){
        User user=User.builder()
                .id(id)
                .name("猿份哥")
                .age(18)
                .build();
        return  ResponseEntity.ok(user );
    }
    @ApiOperation("新增用户信息")
    @PostMapping("/add")
    public ResponseEntity user(User user){
        return ResponseEntity.ok(user);
    }
    @ApiOperation("根据id删除用户信息")
    @DeleteMapping("/del")
    public ResponseEntity<String> user(@ApiParam("ID编号") @RequestParam("id") Integer id){
        String message="删除id为"+id+"的用户";
        return ResponseEntity.ok(message);
    }
    @ApiOperation("根据id更新用户信息")
    @DeleteMapping("/update")
    public Object update(@ApiParam("ID编号") @RequestParam("id") Integer id){
        String message="删除id为"+id+"的用户";
        return ResponseEntity.ok(message);
    }

}

访问接口文档位置

默认的boot访问路径是:http://ip:端口/swagger-ui.html 如:http://localhost:8080/swagger-ui.html

总结

很多自己认为的新东西其实已经不是新东西了,不仅官网存在demo特别是网上的活雷锋已经帮我们避免了许多坑。多向别人学习是多么重要啊!

源码下载链接

原文链接: https://www.lskyf.com/post/161

作者:猿份哥,版权所有,欢迎保留原文链接进行转载:)


全部评论: 0

    我有话说:

    SpringBoot系列19-防止重复请求,重复表单提交超级简单注解的实现之四(终极II)

    前言: 根据最新spring boot:2.5.0版本和在《SpringBoot防止重复请求,重复表单提交超级简单的注解实现之四(终极I)》之上化繁为简抽取更实用的代码,新增超时机制 防重复提交

    Spring Boot系列1-helloword

      使用springboot简单轻松创建helloword SpringBoot系列1-helloword 关于springboot这是摘自官方的一段话 Spring Boot

    Spring Boot系列2-全局统一异常处理

    原创: 天空和唯美 天空唯美  点击查看原文 为什么要全局统一异常处理呢?如果系统发生了异常,不做统一异常处理,前端会给用户展示一大片看不懂的文字。做统一异常处理后当

    Spring Boot系列6-SpringBoot中使用servlet

    介绍在SpringBoot中如何使用servlet pom.xml <dependency> <groupId>org.springframework.boot<

    springboot1.5.9升级到springboot2.1.3遇到的问题

    1.问题描述: Failed to bind properties under 'spring.datasource.druid.driver' to java.sql.Driver:  

    Spring Boot系列7-SpringBoot+mybatis+druid+TypeHandler

    介绍在SpringBoot中集成mybatis和druid以及自定义TypeHandler 创建数据库表 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- --------------------...

    SpringBoot系列21-实现策略模式

    如何在spring boot 中使用@component 实现策略模式 1.在 Spring Boot 中实现策略模式可以使用 @Component 注解来将策略类标记为 Spring 的组件,并

    ...jar中没有主清单属性, spring boot或者spring cloud的maven项目 java -jar test.jar 方式启动报错:...jar中没有主清单属性

    1.spring boot或者spring cloud的maven项目老是遇到问题...jar中没有主清单属性 2.解决方法:在pom.xml中添加如下代码 <build> <

    spring boot面试题及答案持续更新中

    2019-07-28最新整理spring boot面试题及答案 1.Spring Boot是什么 这是摘自官方的一段话 Spring Boot is designed to get you up

    Spring Boot系列8-使用jasypt加密配置文件内容简单

    文章目录 1.为什么配置文件需要加密 2.首先引入pom依赖文件 3.在application.properties或者application.yml文件中配置加密密码 4.获取加密内容例如:我想

    SpringBoot系列14-加载yml,properties配置文件信息

    集合写法 k: [v1,v2,v3] k: -...

    Spring Boot系列5-定时任务-springboot整合quartz实现动态定时任务

    MyJob实现Job接口,重写execute方法在里面操作我们要执行的业务逻辑。 @Slf4j public class MyJob implements Job { @Autowired private MyService myService;...

    SpringBoot系列15-mysql-multiple-data-sources1

    springboot 多数据源的一个简单示例 多数据源分包加载 新建数据库test1和表tbl_user CREATE TABLE `tbl_user` ( `id` int(11) NOT

    java高频面试题-Spring Boot的自动配置是如何工作的,以及它的优点是什么?

    Spring Boot的自动配置是其设计理念的核心之一,它通过约定大于配置的思想,为开发者提供了一种零配置的开发体验。以下是对这个问题的详细解答: 自动配置原理: Spring Boot通过

    如果SpringBoot与SpringCloud老是出各种问题,别急!请看下面的SpringBoot与SpringCloud的版本对应详细

    1.问题 当我们在开发微服务的时候因为SpringBoot和SpringCloud这两兄弟版本没有对应好老是出现各种各样的问题。特别苦逼!别急,往下看!遇到就是缘分,我叫猿份哥! 2.原因

    加入公众号
    加入公众号