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

swagger-ui

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

swagger-ui

目录

一、swagger-ui简介

1.1 swagger-ui原理

1.2 swagger-ui特点

二、swagger-ui+springboot页面使用

2.1 swagger-ui的依赖

2.2 加入以上依赖要注意的点

2.3 工具类

3.4 swagger-ui 常用注解

@Api (修饰类)

@ApiOperation(修饰方法)

@ApiParam (接收参数)

@ApiModel (修饰参数对象类)

@ApiModelProperty(修饰参数对象类上的具体字段)

2.5 进入swagger-ui页面(http://localhost:8080/swagger-ui.html)


一、swagger-ui简介

1.1 swagger-ui原理

        Swagger UI允许任何人(无论您是开发团队还是最终用户)都可以可视化API资源并与之交互,而无需任何实现逻辑。它是根据您的OpenAPI(以前称为Swagger)规范自动生成的,具有可视化文档,可简化后端实现和客户端使用。

1.2 swagger-ui特点

  • 无依赖 UI可以在任何开发环境中使用,无论是本地还是在Web端中。

  • 人性化 允许最终开发人员轻松地进行交互,并尝试API公开的每个操作,以方便使用。

  • 易于浏览 归类整齐的文档可快速查找并使用资源和端点。

  • 所有浏览器支持 Swagger UI 在所有主要浏览器中均可使用,以适应各种可能的情况。

  • 完全可定制 通过完整的源代码访问方式以所需方式设置和调整Swagger UI。

  • 完整的OAS支持 可视化Swagger 2.0或OAS 3.0中定义的API。

二、swagger-ui+springboot页面使用

2.1 swagger-ui的依赖

        io.springfox       springfox-swagger2       2.7.0         io.springfox       springfox-swagger-ui       2.7.0 

2.2 加入以上依赖要注意的点

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

会报一个以上的错:这种错误是因为SpringBoot版本和Swagger版本不匹配导致的,博主Swagger和Swagger-UI用的都是Springfox 2.9.2的,SpringBoot是Idea中创建时自动提供的2.6.2的,Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher(在yml中加入以下内容)

spring: mvc:  pathmatch:   matching-strategy: ant_path_matcher

2.3 工具类

package com.jpa.springdatajpatest.config;​import com.google.common.base.Predicates;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;import springfox.documentation.builders.PathSelectors;import springfox.documentation.service.ApiInfo;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;​@Configuration@EnableSwagger2public class Swagger2Config {​    @Bean    public Docket webApiConfig(){​        return new Docket(DocumentationType.SWAGGER_2)                .groupName("webApi")                .apiInfo(webApiInfo())                .select()                //复制进来只需要改一个 就是这个路径 和你的controller 路径相匹配                //如果匹配 就可以自动识别 你的 controller 路径                .paths(Predicates.not(PathSelectors.regex("/admin/.*")))                .paths(Predicates.not(PathSelectors.regex("/error.*")))                .build();​    }​    @Bean    public Docket adminApiConfig(){​        return new Docket(DocumentationType.SWAGGER_2)                .groupName("adminApi")                .apiInfo(adminApiInfo())                .select()                //同上也需要改                .paths(Predicates.and(PathSelectors.regex("/admin/.*")))                .build();​    }​    //接口的信息    private ApiInfo webApiInfo(){​        return new ApiInfoBuilder()                .title("网站-进行swaggerui的测试")                .description("学习swagger用来接口api文档 测试 ")                .version("1.0")                .build();    }​    private ApiInfo adminApiInfo(){​        return new ApiInfoBuilder()                .title("网站-swaggerui测试")                .description("本文档用来学习swagger 接口api文档 测试")                .version("1.0")                .build();    }}

3.4 swagger-ui 常用注解

@Api (修饰类)

常见参数 value : 类的作用 tags : 非空时会覆盖value的值,可以在ui界面上看到 produces : 设置输出的mime类型,比如 “application/json” consumes : 设置输入的mime类型,比如 “application/json” protocols :安全协议,比如http, https authorizations : 安全声明 hidden :是否在界面上展示

@ApiOperation(修饰方法)

value: 方法介绍 notes:备注说明 tags : 非空时会覆盖value的值 response : 响应类型 httpMethod : 指定的http方法 responseHeaders : 响应头列表 code : 响应的http状态码 produces : 设置输出的mime类型,比如 “application/json” consumes : 设置输入的mime类型,比如 “application/json” protocols :安全协议,比如http, https authorizations : 安全声明 hidden :是否在界面上展示

@ApiParam (接收参数)

name : 参数名称, 和前端传递过来的保持一致 value : 参数的说明 defaultValue : 参数默认值 required : 是否必填

@ApiModel (修饰参数对象类)

value : 类介绍 description : 详细介绍

@ApiModelProperty(修饰参数对象类上的具体字段)

value : 字段含义

package com.jpa.springdatajpatest.controller;​import com.jpa.springdatajpatest.pojo.User;import com.jpa.springdatajpatest.service.UserService;import com.jpa.springdatajpatest.util.ResponseResult;import com.jpa.springdatajpatest.util.SimpleResponse;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.*;​import java.util.List;​@Controller@Api(tags = "用户管理测试类")@RequestMapping("/admin")public class UserController {    @Autowired    private UserService userService;​    public ResponseResult findAll(){        return null;    }​    @ApiOperation(value = "根据name查询")    @GetMapping("/findByName")    @ResponseBody    public String findByName(@RequestParam("name") String name){        User byUsername = userService.findByUsername(name);        return byUsername.toString();    }​    @ApiOperation(value = "查询全部")    @GetMapping("/getAll")    @ResponseBody    public String getAll(){        List all = userService.getAll();        return all.toString();    }​    @ApiOperation(value = "分页查询")    @GetMapping("/pageAll")    @ResponseBody    public ResponseResult pageAll(@RequestParam( value = "pageNum",defaultValue = "1") Integer pageNum,                                  @RequestParam(value = "pageSize",defaultValue = "2") Integer pageSize){        ResponseResult responseResult=new ResponseResult();        try {            Page pages = userService.pages(pageNum, pageSize);            responseResult.setData(pages);            responseResult.setState(200);            responseResult.setMsg("分页查询成功");            return responseResult;        }catch (Exception ex){            responseResult.setState(404);            ex.printStackTrace();            responseResult.setMsg(ex.getMessage());            return responseResult;        }    }​    @ApiOperation(value = "带条件的分页查询")    @GetMapping("/pageAllAndLike")    @ResponseBody    public ResponseResult pageAllAndLike(User user,            @RequestParam( value = "pageNum",defaultValue = "1",required = false) Integer pageNum,            @RequestParam(value = "pageSize",defaultValue = "2",required = false) Integer pageSize    ){        System.out.println("=-=-=-="+user.getUsername()+"-=-="+user.getPassword());        ResponseResult responseResult=new ResponseResult();        try {            Page pages = userService.pagesAndLike(user,pageNum, pageSize);            System.out.println("---"+pages.toString());            responseResult.setData(pages);            responseResult.setState(200);            responseResult.setMsg("分页查询成功");            return responseResult;        }catch (Exception ex){            responseResult.setState(404);            ex.printStackTrace();            responseResult.setMsg(ex.getMessage());            return responseResult;        }    }​    @ApiOperation(value = "删除")    @DeleteMapping("/deleteUser")    @ResponseBody    public ResponseResult getAll(@RequestParam("id") Integer id){        userService.deleteUser(id);        ResponseResult responseResult=new ResponseResult();        responseResult.setData(1);        return responseResult;    }​    @ApiOperation(value = "新增")    @PostMapping("/save")    @ResponseBody    public ResponseResult save(User user){        User save = userService.save(user);        ResponseResult responseResult=new ResponseResult();        responseResult.setData(save);        return responseResult;    }​    @ApiOperation(value = "根据name查询")    @GetMapping("/byName")    @ResponseBody    public ResponseResult byName(@RequestParam("name") String name){        User save = userService.findByName(name);        ResponseResult responseResult=new ResponseResult();        responseResult.setData(save);        return responseResult;    }}

2.5 进入swagger-ui页面(http://localhost:8080/swagger-ui.html)

以下的红色框内容我们可以通过6.2.3工具类进行修改 

一下红框内容可以通过6.2.4swagger-ui常用注解进行修改 

 

 介绍完毕!后会有期!!!

来源地址:https://blog.csdn.net/qq_57512436/article/details/128448804

免责声明:

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

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

swagger-ui

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

下载Word文档

猜你喜欢

2023-09-02

vue的swagger-ui怎么使用

这篇文章主要介绍了vue的swagger-ui怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue的swagger-ui怎么使用文章都会有所收获,下面我们一起来看看吧。think-swagger-ui-
2023-06-29

SpringBoot项目集成Swagger和swagger-bootstrap-ui及常用注解解读

这篇文章主要介绍了SpringBoot项目集成Swagger和swagger-bootstrap-ui及常用注解解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-14

SpringBoot项目集成Swagger和swagger-bootstrap-ui及常用注解有哪些

本篇内容介绍了“SpringBoot项目集成Swagger和swagger-bootstrap-ui及常用注解有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔
2023-07-05
2023-09-07

python 支持swagger

1. 安装flask-swag 模块2. 配置文件中配置swag SWAG_TITLE = "title" SWAG_API_VERSION = "v1.0.4"3. 访问地址0.0.0.0:10000/swagger/ui
2023-01-31

SpringBoot如何集成swagger

小编给大家分享一下SpringBoot如何集成swagger,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagge
2023-05-30

Laravel Swagger怎么使用

这篇“Laravel Swagger怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Laravel Swagger怎么
2023-06-29

jQuery UI

jQuery UI 是建立在 jQuery JavaScript 库上的一组用户界面交互、特效、小部件及主题。无论您是创建高度交互的 Web 应用程序还是仅仅向窗体控件添加一个日期选择器,jQuery UI 都是一个完美的选择。jQuery
2023-06-03

编程热搜

  • 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动态编译

目录