. Swagger2 rest风格接口文档快速开发工具

Swagger 是一套基于 OpenAPI 规范构建的开源工具,可以帮助我们设计、构建、记录以及使用 Rest API。

​ 当下很多公司都采取前后端分离的开发模式,前端和后端的工作由不同的工程师完成。在这种开发模式下,维持一份及时更新且完整的 Rest API 文档将会极大的提高我们的工作效率。传统意义上的文档都是后端开发人员手动编写的,相信大家也都知道这种方式很难保证文档的及时性,这种文档久而久之也就会失去其参考意义,反而还会加大我们的沟通成本。而 Swagger 给我们提供了一个全新的维护 API 文档的方式,下面我们就来了解一下它的优点:

  1. 代码变,文档变。只需要少量的注解,Swagger 就可以根据代码自动生成 API 文档,很好的保证了文档的时效性。
  2. 跨语言性,支持 40 多种语言。
  3. Swagger UI 呈现出来的是一份可交互式的 API 文档,我们可以直接在文档页面尝试 API 的调用,省去了准备复杂的调用参数的过程。

基本使用

1.引入依赖

<dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
    </dependency>

2.在启动类开器功能

@SpringBootApplication
@MapperScan("com.sangeng.mapper")
@EnableSwagger2//Swagger2接口文档维护工具
@EnableScheduling//项目启动开始执行同步功能
public class HcySpringBootApplition {

    public static void main(String[] args) {


        SpringApplication.run(HcySpringBootApplition.class,args);

    }
}

3访问文机ip;
访问:http://localhost:7777/swagger-ui.html 注意其中localhost和7777要调整成实际项目的域名和端口号。

测试结果
在这里插入图片描述

注解优化

  1. @Api 俩个属性 一个是为接口写标签和描述
    在这里插入图片描述
    此时的运行接口
    在这里插入图片描述2. @ApiOperation 因为每个cotroller有多个接口 所以使用该注解经行标识
    代码如下:在这里插入图片描述

运行结果:
在这里插入图片描述
3. @ApiImplicitParam 用于描述接口的参数,但是一个接口可能有多个参数,所以一般与 @ApiImplicitParams 组合使用。
在这里插入图片描述
运行结果:
S
4. 实体类配置
@ApiModel

@ApiModel用于描述实体类。

这里用来写在dto上,在Mabtieplus中,修改记录和传入记录都是传入实体类,可是这样并不利于代码维护和规范 ,应该区别开来,所以重写一个结构和domain一样的伪实体类(不需要Mp映射)接受添加方法传入的参数,然后经行存储时候在用,工具类·经行转换即可
在这里插入图片描述beancopyutils

/**
 * 工具类一般定义类方法
 * 定义bean拷贝
 */
public class BeanCopyUtils {
    private BeanCopyUtils() {
    }
    //todo 之前的beancopy 复杂在于还需要自身创建对象经行复制 用反射在方法体类 逆向生成对象
    public  static <V> V copyBean(Object source, Class<V> clazz){//泛型 定义后返回的方法对象只能是这个类型 (这样就省去了强转换的步骤)
        //todo 创建目标对象
        V result=null;
        try {
             result = clazz.newInstance();//反射 通过字节码文件生成对象
            //todo 实现属性拷贝
            BeanUtils.copyProperties(source,result);
            //todo 返回结果


        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
      return result;
  }
  public  static <O,V> List<V> copyBeanList(List<O> list,Class<V> clazz) {
        return    list.stream()//字节流 相当于 for
                .map(o -> copyBean(o,clazz))//调用上面的方法
                .collect(Collectors.toList());//收集起来做成集合

  }
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(description = "添加评论dto")
public class AddCommentDto{
    //..
}
  1. 实体的属性的描述配置@ApiModelProperty

@ApiModelProperty用于描述实体的属性

    @ApiModelProperty(notes = "评论类型(0代表文章评论,1代表友链评论)")
    private String type;

在这里插入图片描述

  1. 文档信息配置
@Configuration
public class SwaggerConfig {
    @Bean
    public Docket customDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.sangeng.controller"))
                .build();
    }

    private ApiInfo apiInfo() {
        Contact contact = new Contact("团队名", "http://www.my.com", "my@my.com");
        return new ApiInfoBuilder()
                .title("文档标题")
                .description("文档描述")
                .contact(contact)   // 联系方式
                .version("1.1.0")  // 版本
                .build();
    }
}

在这里插入图片描述
结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝胖子不是胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值