swagger-ui

这篇具有很好参考价值的文章主要介绍了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的依赖

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

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;
​
/**
 * @Author:
 * @Description:
 * @Date:Create In 2019-11-1311:07
 **/
@Configuration
@EnableSwagger2
public 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;
​
/**
 * @Author
 * @Date 2022/12/2
 * @Description 类功能描述
 */
@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<User> 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<User> 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<User> 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#/)

swagger-ui,java,spring,spring boot

以下的红色框内容我们可以通过6.2.3工具类进行修改 swagger-ui,java,spring,spring boot

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

 swagger-ui,java,spring,spring boot

 介绍完毕!后会有期!!!文章来源地址https://www.toymoban.com/news/detail-780815.html

到了这里,关于swagger-ui的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 整合 Swagger 教程详解

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SpringBoot 框架从入门到精通 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:Spring Boot 整

    2023年04月14日
    浏览(42)
  • Spring Boot 中如何使用 Swagger

    在开发 Web 应用时,API 文档的编写和维护是一项非常重要的工作。Swagger 是一款非常流行的 API 文档工具,可以自动生成 API 文档,并提供一系列的交互式工具,如测试界面、调试界面等,方便开发者进行 API 的调试和测试。本文将介绍如何在 Spring Boot 应用中使用 Swagger。 首先

    2024年02月11日
    浏览(42)
  • spring boot 集成 swagger3

              Swagger 3是一种开源的API描述工具,它可以帮助开发人员设计、构建、文档化和测试API。Swagger 3支持多种编程语言和框架,包括Java、Node.js、Python、Ruby等,并提供了许多集成工具和插件,例如Postman、Apigee等。 Swagger 3使用OpenAPI规范来描述API,这是一种通用的API描述

    2024年02月06日
    浏览(42)
  • Spring Boot整合Spring Fox生成Swagger文档

    Springfox是一个用于在Spring应用程序中生成Swagger文档的开源库。它提供了一组注解和工具,可以将你的API代码和文档整合在一起,方便生成和展示API的Swagger文档。 使用Springfox,你可以在Spring Boot项目中集成Swagger,并通过Swagger UI查看和测试API。它提供了一些注解,如 @Api 、 @

    2024年02月08日
    浏览(41)
  • Spring Boot 整合 Swagger2 纠错

            因为我要建立的是微服务的项目,需要建立许多模块,以至于我在父工程中引入了当前模块,然后我在子模块中又引入了当前模块,造成了冲突。         另外一种解决方法是,经过上网查证,可能由于Spring Boot和Swagger版本的问题,Spring Boot2.6以上的版本,需要使用

    2024年02月12日
    浏览(37)
  • swagger 2.10.5 整合 spring boot

    2024年02月11日
    浏览(38)
  • Spring Boot 禁用 Swagger 的三种方式

    禁用方法1: ====== 使用注解 @Value() 推荐使用 package com.dc.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; impo

    2024年04月22日
    浏览(44)
  • spring boot 2.7.9 整合 Swagger 3.0

     jdk  1.8 springboot 2.7.9 swagger 3.0.0 描述:Failed to start bean \\\'documentationPluginsBootstrapper\\\'; nested exception is java.lang.NullPointerException 没有这个bean,空指针了。 据网上资料找,3.0的Swagger已经不继承WebMvcConfig这个类,是继承了WebMvcConfigSupport类,从而改动了配置路径规则,然后报空指针,

    2024年02月06日
    浏览(75)
  • spring boot未授权访问及Swagger漏洞处理

    无需修改源码,处理spring boot未授权访问及Swagger漏洞处理 风险程度 :【高危】 漏洞概述 : 未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。登陆验证一

    2024年02月16日
    浏览(39)
  • Spring Boot 3项目集成Swagger3教程

    欢迎来到我的小天地,这里是我记录技术点滴、分享学习心得的地方。📚 🛠️ 技能清单 编程语言 :Java、C、C++、Python、Go、 前端技术 :Jquery、Vue.js、React、uni-app、Echarts UI设计 : Element-ui、Antd、Color-ui 后端技术 :Spring Boot、Mybatis-plus、Swagger 移动开发 :Android 操作系统 :

    2024年04月17日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包