我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Swagger及knife4j的基本使用详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Swagger及knife4j的基本使用详解

Swagger以及knife4j基本使用

Swagger 介绍:

官网:https://swagger.io/

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的 Web 服务

Restful 面向资源

RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构

Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计,它是一种设计风格,不是一种标准,是一种思想。

说明:

http方法资源操作幂等安全
GETSELECT
POSTINSERT
PUTUPDATE
DELETEDELETE

幂等性:对同一REST接口多次访问,得到的资源状态是相同的

安全性:对该REST接口访问,不会使服务端资源状态发生改变

优点:

  • 透明性 --暴露资源存在(资源操作通过http本身语义进行描述,不用单独描述)
  • 充分利用HTTP协议本身语义
  • 无状态 --在调用一个接口时可以不用考虑上下文,不用考虑当前状态降低了复杂度
  • HTTP本身提供了丰富的内容协商手段(缓存,资源修改的乐观并发控制等可以通过与业务无关的中间件实现)

SpringBoot使用swagger

  1. 导入依赖
  2. 2版本
<!--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>

3.0版本

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>

2.编写swagger配置文件

@Configuration
@EnableSwagger2  //开启Swagger2
public class Swagger2Config {
    
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(adminApiInfo())
                 //.enable(false) //enable是否启动Swagger 如果为false,则swagger不能在浏览器中访问
                .groupName("adminApi")
                .select()
                //RequestHandlerSelectors 配置要扫描接口的方式
                //basePackage: 指定要扫描的包
                //any():扫描全部
                //none()不扫描
                //withClassAnnotation: 扫描类上的注解,参数为一个注解的反射对象
                //withMethodeAnnotation: 扫描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.example.swagger.controller"))
                //只显示admin下面的路径
                .paths(Predicates.and(PathSelectors.regex("/admin/.*")))
                .build();
    }

    private ApiInfo adminApiInfo(){
        return new ApiInfoBuilder()
                .title("api文档")
                .description("系统接口描述")
                .version("1.0")
                //作者信息
                .contact(new Contact("张三","http://baidu.com","12345678@qq.com"))
                .build();
    }
}

3.编写接口请求并运行

访问方式(本地):http://localhost:8080/swagger-ui.html

使用:

实体类:

@ApiModel("用户实体类")
public class User{

    @ApiModelProperty("用户名")
    public String username;
}

接口方法,参数:

@RestController
public class UserController{
    
    @ApiOperation("User控制类")
    @GetMapping(value="/user")
    public String getUser(@ApiParam("用户名")String username){
    return "名字为:"+username;
} 
}

常用注解:

@Api:修饰整个类,描述Controller的作用,放在类上

@ApiOperation:描述一个类的一个方法,或者说一个接口

@ApiParam:单个参数描述

@ApiModel:用对象来接收参数

@ApiProperty:用对象接收参数时,描述对象的一个字段

@ApiResponses:HTTP响应整体描述

@ApiResponse:HTTP响应其中1个描述

@ApiIgnore:使用该注解忽略这个API

@ApiError :发生错误返回的信息

@ApiImplicitParams:描述由多个 @ApiImplicitParam 注解的参数组成的请求参数列表

@ApiImplicitParam:描述一个请求参数,可以配置参数的中文含义,还可以给参数设置默认值
//eg:
    @ApiImplicitParam(name="username",value="用户名",required=true)

Knife4j --Swagger增强工具

使用Knife4j2.06以上版本,springboot版本必须大于等于2.2.x

作用

  • 可以搜索接口名称快速定位接口(搜索功能)
  • 可以下载markdown、HTML、word 等格式文件(下载功能)

1.引入依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.9</version>
</dependency>

2.添加SwaggerConfiguration作为Swagger2的配置类

@Configuration
@EnableSwagger2
@EnableKnife4j
//@EnableSwagger2WebMvc 2.6以上报空指针异常则需要添加
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)      // 选择swagger2版本
                .apiInfo(apiInfo())         //定义api文档汇总信息
                .select()
                .apis(RequestHandlerSelectors
                        .basePackage("com.example"))  // 指定生成api文档的包
                .paths(PathSelectors.any())     // 指定所有路径
                .build();
    }

    
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("")     // 文档标题
                .contact(new Contact("", "", ""))   //联系人信息
                .description("")      //描述
                .version("1.0.1")     //文档版本号
                .termsOfServiceUrl("")     //网站地址
                .build();
    }
}

3.实现生产环境关闭文档资源

spring: 
  profiles: prod #指定环境
knife4j:
   production: true #开启屏蔽文档资源

4.实现接口排序

  • 针对不同Controller排序:Controller上标注@ApiSupport(order = 序号)
  • 针对同一个Controller中的不同方法排序:同一个Controller不同接口方法上标注@ApiOperationSupport(order = 序号)

注:更多详细配置:swagger文档增强工具knife4j使用详解

到此这篇关于Swagger以及knife4j的基本使用的文章就介绍到这了,更多相关Swagger knife4j使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Swagger及knife4j的基本使用详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中EXPLAIN的/基本使用及字段详解

目录一、介绍二、基本的使用三、字段详解3.1、id字段3.2、select_type 与 table字段3.3、partitions3.4、type字段3.5、possible_keys 与 key字段3.6、key_len字段3.7、re
MySQL中EXPLAIN的/基本使用及字段详解
2024-09-11

Android IdleHandler基本使用及应用案例详解

这篇文章主要为大家详细介绍了Android IdleHandler的基本使用及应用案例,文中的示例代码讲解详细,具有一定的参考价值,需要的可以参考一下
2022-11-13

.NET中的Swagger使用示例详解

本文章详细介绍了.NET中Swagger的使用示例。通过安装Swashbuckle.AspNetCoreNuGet包,可以生成交互式API文档。使用特性可以为控制器和操作添加Swagger文档信息,包括状态码、响应类型和摘要描述。配置文件中的代码负责配置Swagger设置,启用Swagger中间件并指定文档路径。最终,可以通过SwaggerUI浏览和测试API,从而自动生成文档,简化开发和测试,提高代码可维护性,促进API可发现性和集成。
.NET中的Swagger使用示例详解
2024-04-02

gochan基本使用详解

本文主要介绍了gochan基本使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-18

Apache POI的基本使用详解

目录基本介绍入门测试(从Excel文件读取数据)第一步:导入maven坐标第二步:创建Excel文件第三步:写测试代码代码说明及扩展入门测试(向Excel文件写入数据)基本介绍 POIpache POI是用java编写的免费开源的跨平台的J
2022-06-04

Android RecyclerView基本使用详解

什么是RecyclerView 关于RecyclerView,是一个主要用于展示和回收View的有一个控件,在官用了一句话来概括 RecyclerView 是一种通过提供有限的数据项窗口有效显示大数据集的视图。 基提供几个基本的功能, 控制
2022-06-06

详解adb工具的基本使用

adb全称AndroidDebugBridge,是AndroidSDK中的一个工具,使用adb可以直接操作管理Android模拟器或者真实的Andriod设备,就是起到调试桥的作用,这篇文章主要介绍了adb工具的基本使用,需要的朋友可以参考下
2022-11-13

GoJs基本使用示例详解

这篇文章主要为大家介绍了GoJs基本使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-16

pytorchDataLoaderj基本使用方法详解

这篇文章主要为大家介绍了pytorchDataLoaderj基本使用方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录