前言

可能运用的开发模式:

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. Spring Cloud微服务核心架构分析

    Spring Cloud是一个相对比较成熟的微服务框架.虽然,Spring Cloud于2016年才推出1.0的release版本, 时间最短, 但是相比Dubbo等RPC框架, Spring Clo ...

  2. svn服务端安装和使用

    首先去官网下载安装包 点我下载 下载完了以后选择安装路径然后一直next就可以了 安装完了以后在开始菜单里面找到svn 打开  如何使用? 这里是创建代码管理的存储库 点击 repositories ...

  3. parsel的使用

    介绍 parsel这个库可以解析HTML和XML,并支持使用XPath和CSS选择器对内容进行提取和修改,同时还融合了正则表达式的提取功能.parsel灵活强大,同时也是Python最流行的爬虫框架的 ...

  4. 通俗易懂的路径搜索之A-star算法

    A-star算法 搜索技术 搜索技术是一种通用的问题求解技术,可以将待解决的问题转化为可搜索的问题空间,然后在该空间中搜索求解.搜索技术在人工智能领域有着非常广泛的应用. 盲目搜索 盲目搜索是最简单的 ...

  5. detect.py - yolov5master nvidia jetson agx xavier for mask with UART

    import argparse import time from pathlib import Path import cv2 import torch import torch.backends.c ...

  6. Windows 编译 FFMpeg

    Windows 编译 FFMpeg 背景: 为了提高公司产品的质量,对FFMPEG进行优化,需要重新编译. Host :Windows-10,core-i7 MinGW :网络版 pkg-config ...

  7. 海思SDK 学习 :000-海思HI35xx平台软件开发快速入门之背景知识

    背景 参考自:<HiMPP V3.0 媒体处理软件开发参考.pdf> 由于在音视频处理领域,海思芯片占有全球市场的很大份额.当我们选择使用海思芯片开发时,程序开发模型主要是围绕HIMPP( ...

  8. 张高兴的 MicroPython 入门指南:(一)环境配置、Blink、部署

    目录 什么是 MicroPython 环境配置 硬件部分 软件部分 Hello World! Blink Pico 的引脚 常见电子元件 面包板 跳线 开关 发光二极管 电阻 使你的 Pico 闪烁 ...

  9. Nuxt3 的生命周期和钩子函数(七)

    title: Nuxt3 的生命周期和钩子函数(七) date: 2024/6/30 updated: 2024/6/30 author: cmdragon excerpt: 摘要:文章阐述了Nuxt ...

  10. 什么是RDD

    RDD(Resilient Distributed Dataset)叫做弹性分布式数据集RDD,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合.RDD具有数据流模 ...