swagger-ui
目录
@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