前言

可能运用的开发模式:

SSM -> SpringMVC + Spring + Mybatis

SSMP -> SpringMVC + Spring + MybatisPlus

SM -> SpringBoot + Mybatis

SMP -> SpringBoot + MybatisPlus

分布式

微服务

前后端分离

网站架构基本都由原来的后端渲染,变成了:前端渲染、前后端分离的形态,

而且前端技术和后端技术在各自的道路上越走越远。

前端和后端的唯一联系,变成了API接口;

API文档变成了前后端开发人员联系的纽带,变得越来越重要,

swagger就是一款让你更好的书写API文档的框架,而且swagger可以完全模拟http请求,入参出参和实际情况差别几乎为零。

没有API文档工具之前,大家都是手写API文档的(维护起来相当困难),

在什么地方书写的都有,有在confluence上写的,有在对应的项目目录下readme.md上写的,

每个公司都有每个公司的玩法,无所谓好坏。

但是能称之为“框架”的,估计也只有swagger了

快速上手:

创建SpringBoot工程:

点选常用三件套辅助工具和一个SpringWeb

构建完成删除maven的配置文件:

创建一个user类并放在domain包下

package cn.echo42.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; /**
* @author DaiZhiZhou
* @file SpringBoot-Swagger
* @create 2020-08-05 10:51
*/ @Data
@AllArgsConstructor
@NoArgsConstructor
public class User { private Integer user_id;
private String user_name;
private String user_address; @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
private Date birth; }

创建一个结果对象类并放在Common包下:

package cn.echo42.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; /**
* @author DaiZhiZhou
* @file SpringBoot-Swagger
* @create 2020-08-05 10:54
*/ @Data
@AllArgsConstructor
@NoArgsConstructor
public class ResultObject {
private Integer status = 200;
private Object msg;
}

集成Swagger2的坐标:

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

创建Swagger2的配置类:

package cn.echo42.config;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; /**
* @author DaiZhiZhou
* @file SpringBoot-Swagger
* @create 2020-08-05 10:56
*/
@Configuration
@EnableSwagger2
public class Swagger2Configuration { @Bean
public Docket swaggerSpringMvcPlugin() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build();
} private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.description("这是一个很NB的API工具")
.contact(new Contact("Echo42", "http://www.echo42.cn", "1791255334@qq.com")) //名片
.version("1.0") //版本
.license("Otaku ArkD42")//所有者
.build();//构造
}
}

创建UserController控制器类:

package cn.echo42.controller;

import cn.echo42.common.ResultObject;
import cn.echo42.domain.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import java.util.ArrayList;
import java.util.Date;
import java.util.List; /**
* @author DaiZhiZhou
* @file SpringBoot-Swagger
* @create 2020-08-05 11:02
*/ @Controller
@RequestMapping("user")
@Api(description = "用户管理",value = "UserController")
public class UserController { @ApiOperation(value ="用户查询" ,consumes = "查询所有用户")
@GetMapping("queryAllUser")
public List<User> queryAllUser(){
List<User> list=new ArrayList<>();
for (int i = 1; i <=5 ; i++) {
list.add(new User(1,"小明"+i,"武汉"+i,new Date()));
}
return list;
} /**
* 根据ID查询一个用户
*/
@ApiOperation(value ="根据ID查询用户" ,consumes = "根据ID查询用户")
@GetMapping("queryUserById")
public User queryAllUser(@RequestParam("userId")Integer id){ //加了RequestParam之后可以解决调试时验证问题
return new User(id,"小明","武汉",new Date());
} /**
* 添加一个用户
*/
@ApiOperation(value ="添加用户")
@PostMapping("addUser")
public ResultObject addUser(@RequestBody User user){//@RequestBody验证前端所有数据非空的同时要求必须提交json格式的数据
System.out.println(user);
return new ResultObject(200,"添加成功");
} /**
* 添加一个用户
*/
@ApiOperation(value ="添加用户2")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "userId", value = "用户标识", required = true, paramType = "整数", dataType = "整数"),
@ApiImplicitParam(name = "userName", value = "用户名称", required = true, paramType = "字符串", dataType = "字符串")
})
@PostMapping("addUser2")
public ResultObject addUser2(User user){//@RequestBody验证前端所有数据非空的同时要求必须提交json格式的数据
System.out.println(user);
return new ResultObject(200,"添加成功");
} /**
* 添加一个用户
*/
@ApiOperation(value ="修改用户")
@PostMapping("updateUser")
public ResultObject updateUser(@RequestBody User user){//@RequestBody验证前端所有数据非空的同时要求必须提交json格式的数据
System.out.println(user);
return new ResultObject(200,"修改成功");
} /**
* 根据ID删除一个用户
*/
@ApiOperation(value ="删除用户")
@DeleteMapping("deleteUser")
public ResultObject deleteUser(@RequestParam("userId") Integer id){
System.out.println(id);
return new ResultObject(200,"删除成功");
} }

启动工程,访问swagger-ui.html

http://localhost:8080/swagger-ui.html

控制器的文档说明:

模型层的文档:

Swagger皮肤更换:

<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- swagger-ui -->
<!--<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>

重启工程,访问地址:

http://localhost:8080/doc.html

【SpringBoot】整合Swagger 接口文档的更多相关文章

  1. springboot+swagger接口文档企业实践(下)

    目录 1.引言 2. swagger接口过滤 2.1 按包过滤(package) 2.2 按类注解过滤 2.3 按方法注解过滤 2.4 按分组过滤 2.4.1 定义注解ApiVersion 2.4.2 ...

  2. SpringBoot开发mockserver及生成swagger接口文档

    通过springboot开发mock server,包含get及post接口,用于练习接口自动化及jmeter很方便 当然,也为后面jenkins持续集成做基础(开发push代码后  → jenkin ...

  3. SpringBoot 如何生成接口文档,老鸟们都这么玩的!

    大家好,我是飘渺. SpringBoot老鸟系列的文章已经写了两篇,每篇的阅读反响都还不错,果然大家还是对SpringBoot比较感兴趣.那今天我们就带来老鸟系列的第三篇:集成Swagger接口文档以 ...

  4. 基于.NetCore开发博客项目 StarBlog - (26) 集成Swagger接口文档

    前言 这是StarBlog系列在2023年的第一篇更新~ 在之前的文章里,我们已经完成了部分接口的开发,接下来需要使用 curl.Postman 这类工具对这些接口进行测试,但接口一多,每次测试都要一 ...

  5. .net core的Swagger接口文档使用教程(二):NSwag

    上一篇介绍了Swashbuckle ,地址:.net core的Swagger接口文档使用教程(一):Swashbuckle 讲的东西还挺多,怎奈微软还推荐了一个NSwag,那就继续写吧! 但是和Sw ...

  6. springboot+swagger接口文档企业实践(上)

    目录 1.引言 2.swagger简介 2.1 swagger 介绍 2.2 springfox.swagger与springboot 3. 使用springboot+swagger构建接口文档 3. ...

  7. Springboot中整合knife4j接口文档

    在项目开发过程中,web项目的前后端分离开发,APP开发,需要由前端后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发. 什么是knife4j 简单说knife4j就swagge ...

  8. Swagger 接口文档

    目录 Swagger 介绍 Swagger 依赖 SpringBoot 集成 Swagger 配置类 常用注解 效果示例 Swagger 介绍 Swagger UI 允许任何人(无论是开发团队还是最终 ...

  9. .Net Core---- WebApi生成Swagger接口文档

    1. Swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件 ...

  10. REST-framework快速构建API--生成Swagger接口文档

    一.Swagger概述 1.引言 当接口开发完成,紧接着需要编写接口文档.传统的接口文档使用Word编写,or一些接口文档管理平台进行编写,但此类接口文档维护更新比较麻烦,每次接口有变更,需要手动修改 ...

随机推荐

  1. LINQ to Entities does not recognize the method 'System.String ToString()' method

    LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method ca ...

  2. http的响应码200,404,302,500表示的含义分别是?

    200 - 确定.客户端请求已成功 302 - 临时移动转移,请求的内容已临时移动新的位置 404 - 未找到文件或目录 500 - 服务器内部错误

  3. OFBiz RCE漏洞复现(CVE-2023-51467)

    漏洞名称 Apache OFBiz 鉴权绕过导致命令执行 漏洞描述 Apache OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构 ...

  4. 开启IPV6网络

    1.路由器开启IPV6支持 2.路由器关闭IPV6 DHCP服务 3.若外网无法访问则关闭路由器防火墙 或关闭系统防火墙 4.tomcat需设置地址为0.0.0.0

  5. 支持TraceID、错误文件、错误行的第三方golang库:gerror

    Gerr库简介 Golang第三方库 官方仓库:https://github.com/GuoFlight/gerror 特点: 兼容golang原生error库 gerror会自动生成traceID, ...

  6. 安卓内核编译:关闭"error, forbidden warning"

    安卓内核编译:关闭error, forbidden warning 背景 最近在编译Android kernel时,遇到error, forbidden warning, 导致编译中断,大大降低了de ...

  7. centos如何统计磁盘使用总量,以及cpu使用率

    剩余硬盘容量 T: df | awk '{print $4}' |sed 's/Available//g' |sed '/^\s*$/d' | awk '{sum+=$1} END {print su ...

  8. 开发板测试手册——USB 4G 模块、GPS 定位功能操作步骤详解(3)

    目录 4 USB 4G 模块测试 41 4.1 网络功能测试 42 4.2 短信功能测试 43 4.3 GPS 定位功能测试 44 4.4 通话功能测试 45 4.5 测试程序编译 46 5 USB ...

  9. 【ClickHouse】7:clickhouse多实例安装

    背景介绍: 有三台CentOS7服务器安装了ClickHouse HostName IP 安装程序 实例1端口 实例2端口 centf8118.sharding1.db 192.168.81.18 c ...

  10. 浏览器中JS的执行

    JS是在浏览器中运行的,浏览器为了运行JS, 必须要编译或解释JS,因为JS是高级语言,计算机不认识,必须把它编译或解释成机器语言,其次,在运行JS的过程,浏览器还要创建堆栈,因为程序是在栈中执行,执 ...