SpringBoot集成Swagger3.0(入门) 02

news2024/9/24 3:29:29

文章目录

        • Swagger3常用配置注解
        • 接口测试
        • API信息配置
        • Swagger3 Docket开关,过滤,分组

Swagger3常用配置注解

@ApiImplicitParams,@ApiImplicitParam:Swagger3对参数的描述。

参数名参数值
name参数名
value参数的具体意义,作用。
required参数是否必填。
dataType参数的数据类型。
paramType查询参数类型

paramType有如下几种形式:

类型作用
path以地址的形式提交数据
query直接跟参数完成自动映射赋值
body以流的形式提交,仅支持post
header参数在request headers里边提交
form以form表单的形式提交,仅支持post

@ApiResponses, @ApiResponse:Swagger3对响应信息的描述。

参数名参数值
code响应码:400
message信息,例如:请求参数类型错误。
response抛出异常的类。

Controller层

package com.xct.swagger_1.controller.one;

import com.xct.swagger_1.entity.User;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;

/**
 * @author xct
 * @date 2023年03月01日 16:08
 */
@Api("接口测试")
@RestController
@RequestMapping("novel")
public class Test1Controller {

    @ApiOperation("测试功能1")
    @GetMapping("hello")
    public String test(){
        return "HelloYc";
    }

    @PostMapping("search")
    @ApiImplicitParams({
            @ApiImplicitParam(name="name",value ="姓名",required=true,paramType="query"),
            @ApiImplicitParam(name = "age",value = "年龄",required = true,paramType = "query",dataType = "Integer")
    })
    @ApiOperation("测试查询")
    public String search(String name,Integer age){
        return name+":"+age;
    }

    @ApiOperation("测试增加")
    @PostMapping("add")
    public String add(@RequestBody User user){
        return user.getName()+":"+user.getAge();
    }

    @GetMapping("user/{id}")
    @ApiOperation("根据id获取用户信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id",value = "用户编号",required = true,paramType = "path")
    })

    @ApiResponses({
            @ApiResponse(code=500,message = "后端代码错误"),
            @ApiResponse(code=400,message = "请求参数类型错误"),
            @ApiResponse(code=404,message = "请求路径错误")
    })
    public User load(@PathVariable("id") Long id){
        return new User(id,"jack",32,1,"无");
    }
}

接口测试


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

API信息配置

SwaggerConfig配置文件

package com.xct.swagger_1.config;

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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;


@Configuration
//@EnableSwagger2 //swagger3版本不需要使用这个注解,当然写上也无所谓~
public class SwaggerConfig {
    //配置Swagger的Docket bean

    @Bean
    public Docket createRestApi1() {
        return new Docket(DocumentationType.OAS_30)// 指定Swagger3.0版本
                .groupName("开发组001")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xct.swagger_1.controller.one"))//扫描指定包下的api
                .build()
                .apiInfo(createApiInfo());
    }

    @Bean
    public Docket createRestApi2() {
        return new Docket(DocumentationType.OAS_30)// 指定Swagger3.0版本
                .groupName("开发组002")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xct.swagger_1.controller.two"))//扫描指定包下的api
                .build()
                .apiInfo(createApiInfo());
    }

    @Bean
    public ApiInfo createApiInfo() {
        return new ApiInfoBuilder()
                .title("yc&xct管理平台")
                .description("yc&xct管理平台 API接口文档")
                .license("南京信息技术有限公司")
                .licenseUrl("")
                .version("1.0")
                .build();

    }
}

Swagger3 Docket开关,过滤,分组

开关:调用enable方法。
开:

在这里插入图片描述
关:

在这里插入图片描述
过滤:调用select方法;通过apis方法,basePackage可以根据包路径来生成特定类的API,any方法是默认所有都有效,none方法都无效。withClassAnnotation根据类注解,withMethodAnntation是根据方法注解,一般我们用的是basePackage方法。

控制器1:

package com.xct.swagger_1.controller.one;

import com.xct.swagger_1.entity.User;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;

/**
 * @author xct
 * @date 2023年03月01日 16:08
 */
@Api("接口测试")
@RestController
@RequestMapping("novel")
public class Test1Controller {

    @ApiOperation("测试功能1")
    @GetMapping("hello")
    public String test(){
        return "HelloYc";
    }

    @PostMapping("search")
    @ApiImplicitParams({
            @ApiImplicitParam(name="name",value ="姓名",required=true,paramType="query"),
            @ApiImplicitParam(name = "age",value = "年龄",required = true,paramType = "query",dataType = "Integer")
    })
    @ApiOperation("测试查询")
    public String search(String name,Integer age){
        return name+":"+age;
    }

    @ApiOperation("测试增加")
    @PostMapping("add")
    public String add(@RequestBody User user){
        return user.getName()+":"+user.getAge();
    }

    @GetMapping("user/{id}")
    @ApiOperation("根据id获取用户信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id",value = "用户编号",required = true,paramType = "path")
    })

    @ApiResponses({
            @ApiResponse(code=500,message = "后端代码错误"),
            @ApiResponse(code=400,message = "请求参数类型错误"),
            @ApiResponse(code=404,message = "请求路径错误")
    })
    public User load(@PathVariable("id") Long id){
        return new User(id,"jack",32,1,"无");
    }
}

控制器2:

package com.xct.swagger_1.controller.two;

import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;

/**
 * @author xct
 * @date 2023年03月01日 16:08
 */
@Api("接口测试2")
@RestController
@RequestMapping("novel")
public class Test2Controller {

    @ApiOperation("测试功能2")
    @GetMapping("hello2")
    public String test(){
        return "HelloYc2";
    }

}

测试:
basePackage:指定包路径下的api
在这里插入图片描述

any:任何api都有效。


none:任何api都无效。


分组


在这里插入图片描述

该文章参考多方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mes系统核心业务流程及应用场景介绍

现在许多企业已经开始使用MES系统控制和管理工厂的生产过程,实时监控、诊断和控制生产过程,完成单元集成和系统优化。本文将为大家具体介绍一下MES系统的业务流程。 MES系统业务流程 1、计划调度MES系统承接了ERP订单,开始干预生产。该模块…

kaggle RSNA 比赛过程总结

引言 算算时间,有差不多两年多没在打kaggle了,自20年最后一场后(其实之前也就打过两场,一场打铁,一场表格赛是金是银不太记得,当时相当于刺激战场,过拟合lb大赛太刺激了,各种trick只…

毕业设计 基于51单片机的指纹红外密码电子锁

基于51单片机的指纹红外密码电子锁1、项目简介1.1 系统框架1.2 系统功能2、部分电路设计2.1 STC89C52单片机最小系统电路设计2.2 矩阵按键电路电路设计2.3 液晶显示模块电路设计3、部分代码展示3.1 LCD12864显示字符串3.2 串口初始化实物图1、项目简介 选题指导,项…

动态规划|特殊的多行规划|dp[2][] 用两行元素分别记录状态变化

多行规划是我自己整理此类问题时起的名字,如有专属名词,麻烦评论告知 用于处理当动态规划中,需要记录多个值的状态变化时。 376. 摆动序列(特殊的自定义二维dp) 做惯了一般的动态规划,突然看到这种题目&a…

UDPTCP网络编程

udp编程接口 一个UDP程序的编写可以分为3步: 创建一个网络套接字: 它相当于文件操作时的文件描述符,是一个程序进行网络通讯的门户, 所有的网络操作都要基于它 绑定IP和端口: 需要为网络套接字填充IP和端口信息 但是…

Python - 操作txt文件

文章目录打开txt文件读取txt文件写入txt文件删除txt文件打开txt文件 open(file, moder, bufferingNone, encodingNone, errorsNone, newlineNone, closefdTrue)函数用来打开txt文件。 #方法1,这种方式使用后需要关闭文件 f open("data.txt","r&qu…

【Visual Studio】git提交代码时使用GPG

前言 下载安装GPG的过程省略,直接开始进行配置 0.visual studio 版本说明 其余版本未测试,但是应该也是可以的 1 获取GPG的密钥ID 1.1 window下可以打开Kleopatra查看生成好的密钥的密钥ID 1.2 也可以从命令行中获取 gpg --list-keys 红框位置,后16位就是密钥ID 2 配置.git…

QML MouseArea详解

1.MouseArea简介 MouseArea是一个不可见的项目,通常与一个可见的项目一起使用,以便为该项目提供鼠标处理。通过有效地充当代理,鼠标处理的逻辑可以包含在MouseArea项中。 常用属性: 属性 类型描述 containsMouse bool 光标当前…

刷题笔记2 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结

977.有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 […

二、Spring概述

1.Spring简介 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 Sp…

关于如何合理设置线程池参数解决方案

关于如何合理设置线程池参数解决方案&#xff08;ThreadPoolExecutor&#xff09; 线程池参数有哪些 我们直接来看构造方法 ... public ThreadPoolExecutor(int var1, int var2, long var3, TimeUnit var5, BlockingQueue<Runnable> var6,ThreadFactory var7, Rejecte…

W25Q256被写保护如何修改

W25Q256被写保护如何修改1、 W25Q256数据读不到1.1 打印的寄存器的值1.2 可能原因1.3 解决办法1.4 用到的函数1、 W25Q256数据读不到 能够正确的读到ID&#xff0c;但是读到的数据不正确 1.1 打印的寄存器的值 0x2 BUSY &#xff1a;只读&#xff0c; 指令正在执行 WEL (1) &…

物盾安全汤晓冬:工业互联网企业如何应对高发的供应链安全风险?

编者按&#xff1a;物盾安全是一家专注于物联网安全的产品厂商&#xff0c;其核心产品“物安盾”在能源、制造、交通等多个领域落地&#xff0c;为这些行业企业提供覆盖物联网云、管、边、端的安全整体解决方案。“物安盾”集成了腾讯安全制品扫描&#xff08;BSCA&#xff09;…

【二】kubernetes操作

k8s卸载重置 名词解释 1、Namespace&#xff1a;名称用来隔离资源&#xff0c;不隔离网络 创建名称空间 一、命名空间namesapce 方式一&#xff1a;命令行创建 kubectl create ns hello删除名称空间 kubectl delete ns hello查询指定的名称空间 kubectl get pod -n kube-s…

【Adobe国际认证中文官网】Adobe中国摄影计划,免费安装 正版激活

一直以来国内有非常多的 Adobe 用户&#xff0c;但苦于正版的购买渠道较少、价格较为高昂&#xff0c;转而选择其他国家或地区的 Adobe 计划&#xff0c;亦或者是其他软件。这次Adobe在杭州宣布在中国大陆地区推出面向专业摄影师及摄影爱好者的Adobe Creative Cloud 中国摄影计…

大话数据结构-普里姆算法(Prim)和克鲁斯卡尔算法(Kruskal)

5 最小生成树 构造连通网的最小代价生成树称为最小生成树&#xff0c;即Minimum Cost Spanning Tree&#xff0c;最小生成树通常是基于无向网/有向网构造的。 找连通网的最小生成树&#xff0c;经典的有两种算法&#xff0c;普里姆算法和克鲁斯卡尔算法。 5.1 普里姆&#xff…

技术分享| 如何使用Prometheus实现系统监控报警邮件通知

上一篇关于Prometheus的文章中说到了Prometheus是如何实现进程监控。在实际的线上环境中&#xff0c;当系统进程出现异常后需要实时通知到值班运维人员&#xff0c;去检查系统是否还正常运转。下面我们就介绍下基于Prometheus如何实现监控报警通知。 Prometheus的报警通知&…

【蓝桥杯每日一题】递归算法

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; 蓝桥杯 &#x1f319;我与杀戮之中绽放&#xff0c;亦如黎明的花…

【项目】Vue3+TS 动态路由 面包屑 查询重置 列表

&#x1f4ad;&#x1f4ad; ✨&#xff1a;【项目】Vue3TS 动态路由 面包屑 查询重置 列表   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: 热烈的不是青春&#xff0c;而是我们&#x1f49c;&#x1f49c;   &#x1f338;: 如有错误或不足之处&#xff0…

jsoncpp+cmake使用

目录写在前面准备clone源码编译使用编译运行参考写在前面 1、本文内容 jsoncpp编译及其使用 2、平台 windows10, linux 3、转载请注明出处&#xff1a; https://blog.csdn.net/qq_41102371/article/details/129300456 准备 clone源码 mkdir json cd json git clone https:…