Hello大家好,本章我们添加Swagger2来在线自动生成接口的文档+测试功能。有问题可以联系我mr_beany@163.com。另求各路大神指点,感谢

一:什么是Swagger

Swagger是一款通过我们添加的注解来对方法进行说明,来自动生成项目的在线api接口文档的web服务。

二:添加Swagger2依赖

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.4.0</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.4.0</version>
</dependency>复制代码

然后鼠标右键选择Maven→Reimport进行依赖下载

三:创建Swagger2配置文件

在文件夹configurer中创建SwaggerConfigurer

package com.example.demo.core.configurer;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.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;/*** @author 张瑶* @Description:Swagger2 配置文件* @time 2018/4/20 22:42*/
@Configuration
@EnableSwagger2
public class SwaggerConfigurer {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("mySpringBoot 使用Swagger2构建RESTful APIs").description("更多Spring Boot相关文章请关注:https://juejin.im/user/59e7fb9451882578e1406a51/posts").termsOfServiceUrl("https://juejin.im/user/59e7fb9451882578e1406a51/posts").contact(new Contact("Mr_初晨", "https://gitee.com/beany/mySpringBoot", null)).version("1.0").build();}
}复制代码

四:修改Controller,添加API注解

package com.example.demo.controller;@RestController
@RequestMapping("userInfo")
@Api(tags = {"用户操作接口"}, description = "userInfoControler")
public class UserInfoController {@Resourceprivate UserInfoService userInfoService;@PostMapping("/hello")public String hello() {return "hello SpringBoot";}@ApiOperation(value = "查询用户", notes = "根据用户ID查询用户")@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "用户ID", required = true,dataType = "Integer", paramType = "query")})@PostMapping("/selectById")public RetResult<UserInfo> selectById(@RequestParam Integer id) {UserInfo userInfo = userInfoService.selectById(id);return RetResponse.makeOKRsp(userInfo);}@PostMapping("/testException")public RetResult<UserInfo> testException(Integer id) {List a = null;a.size();UserInfo userInfo = userInfoService.selectById(id);return RetResponse.makeOKRsp(userInfo);}}
复制代码

注意参数前需加上@RequestParam

以上注解大家可以查看参考swagger官方注解文档进行自定义添加

五:接口测试

浏览器输入localhost:8080/swagger-ui.html我们可以看到。。哎呀我曹,页面呢??

六:解决问题

继承WebMvcConfigurationSupport之后,静态文件映射会出现问题,需要重新指定静态资源

WebConfigurer 中添加如下代码

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");registry.addResourceHandler("/favicon.ico").addResourceLocations("classpath:/META-INF/resources/favicon.ico");super.addResourceHandlers(registry);
}复制代码

七:接口测试

浏览器输入localhost:8080/swagger-ui.html我们可以看到如下页面

打开POST /userInfo/selectById

请求结果

八:英语看着不爽,怎么办?

根据swagger官方使用手册 找到关于本地化和翻译的说明:

九:添加翻译文件

resourece目录下创建\META-INF\resourece目录,创建swagger-ui.html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Swagger UI</title><link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/images/favicon-32x32.png" sizes="32x32"/><link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/images/favicon-16x16.png" sizes="16x16"/><link href='webjars/springfox-swagger-ui/css/typography.css' media='screen' rel='stylesheet' type='text/css'/><link href='webjars/springfox-swagger-ui/css/reset.css' media='screen' rel='stylesheet' type='text/css'/><link href='webjars/springfox-swagger-ui/css/screen.css' media='screen' rel='stylesheet' type='text/css'/><link href='webjars/springfox-swagger-ui/css/reset.css' media='print' rel='stylesheet' type='text/css'/><link href='webjars/springfox-swagger-ui/css/print.css' media='print' rel='stylesheet' type='text/css'/><script src='webjars/springfox-swagger-ui/lib/jquery-1.8.0.min.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/jquery.slideto.min.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/jquery.wiggle.min.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/jquery.ba-bbq.min.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/handlebars-2.0.0.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/underscore-min.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/backbone-min.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/swagger-ui.min.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/highlight.7.3.pack.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/jsoneditor.min.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/marked.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lib/swagger-oauth.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/springfox.js' type='text/javascript'></script><!--国际化操作:选择中文版 --><script src='webjars/springfox-swagger-ui/lang/translator.js' type='text/javascript'></script><script src='webjars/springfox-swagger-ui/lang/zh-cn.js' type='text/javascript'></script>
</head><body class="swagger-section">
<div id='header'><div class="swagger-ui-wrap"><a id="logo" href="http://swagger.io">swagger</a><form id='api_selector'><div class='input'><select id="select_baseUrl" name="select_baseUrl"/></div><div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div><div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div><div class='input'><a id="explore" href="#" data-sw-translate>Explore</a></div></form></div>
</div><div id="message-bar" class="swagger-ui-wrap" data-sw-translate>&nbsp;</div>
<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
</body>
</html>复制代码

重点为<!--国际化操作:选择中文版 -->下两个js文件

translator.js为翻译器    zh-cn.js为中文脚本语言

十:测试

浏览器输入localhost:8080/swagger-ui.html我们可以看到如下页面

十一:样式丑?更换ui

swagger-bootstrap-ui

swagger-ui-layer

项目地址

码云地址: gitee.com/beany/mySpr…

GitHub地址: github.com/MyBeany/myS…

写文章不易,如对您有帮助,请帮忙点下star

结尾

springboot添加Swagger2来在线自动生成接口的文档+测试功能已完成,后续功能接下来陆续更新,有问题可以联系我mr_beany@163.com。另求各路大神指点,感谢大家。

从零搭建自己的SpringBoot后台框架(六)相关推荐

  1. 从零搭建自己的SpringBoot后台框架(一)

    Hello大家好,本章我们搭建项目基础框架结构和整合mybatis:项目所需环境jdk1.8,maven,mysql数据库:开发工具IDEA.有问题可以联系我.另求各路大神指点,感谢! 一:通过ide ...

  2. 从零搭建自己的SpringBoot后台框架(七)

    Hello大家好,本章我们添加PageHelper分页查询功能.有问题可以联系我mr_beany@163.com.另求各路大神指点,感谢 一:什么是PageHelper PageHelper是一款好用 ...

  3. 搭建一个简单springboot后端框架

    前言 框架知识是每个程序员都应该或多或少都要有所了解,作为后端开发更是以后进阶架构师必备的知识储备:以此为出发点,我们可以从搭建一个简单的后端框架开始,了解相关的技术点和搭建思路. 我们可以从创建项目 ...

  4. 详解从零搭建企业级 vue3 + vite2+ ts4 框架全过程

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 本文不仅仅是搭建个脚手架这么简单,还会带你了解每一步.甚至每一个配置项的作用,和每个配置的知 ...

  5. activiti 工作流 springboot 后台框架平台 集成代码生成器 shiro 权限

    QQ 313596790 官网:www.fhadmin.org 下载地址 工作流模块---------------------------------------------------------- ...

  6. 【源码好又多】springboot后台框架

    " 关键句: java " 导读:市面上权限框架大多都是采用SpringBoot.MyBatis.Shiro的居多,这里来一个SpringBoot.JPA.Shiro的.JDK1. ...

  7. SpringBoot后台权限管理系统(三)—权限模块

    SpringBoot 后台权限框架搭建(一)-后台框架搭建 SpringBoot后台权限管理系统(二)-前端工程搭建 SpringBoot后台权限管理系统(三)-权限模块 SpringBoot后台权限 ...

  8. 基于springboot 快速搭建简单前后端分离项目-后台框架

    目录 1.新建project 2.选择依赖 3.简单配置 4.数据库准备 5.完成后台逻辑代码 5.1创建java实体对象 5.2创建repository 5.3单元测试 5.4编写controlle ...

  9. Springboot + mybatis搭建后台框架

    最近在学习Java搭建后台框架,想自己写接口,自己用,毕竟自己动手丰衣足食,同时也想去了解一下后台的大体框架和流程是怎么创建的,此过程由公司后台教的,有人带着真好~ 首先第一步,就是创建数据库,这个是 ...

最新文章

  1. 纠结的Python2.7编码与os.walk()函数的目录参数
  2. 牛客网 New Game! 建图+最短路
  3. redis.conf 常见配置介绍
  4. c++ windows下读取指定目录的所有文件名字
  5. c#进阶(1)—— Task Parallel Library 并行执行与串行执行
  6. (转载)今天的她坐在凳子上面的【飞秋】
  7. java 共享session_java session共享
  8. 虫术python绝技_《圣济总录》
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的大学生兼职网站
  10. Chinese_PRC_CI_AS 和 Chinese_PRC_90_CI_AI 之间的排序规则冲突问题
  11. 图解 Laravel 请求的完整生命周期
  12. Chapter 2 向量空间
  13. WEB标准布局(DIV+CSS)学习笔记(二)--DIV的布局基础
  14. 关于电感开始饱和,开关过应力时开关的电流曲线的解释// 《精通开关电源设计》P53 图2-7
  15. 计算机应用基础综合测试题b卷,10级《计算机应用基础》期末试卷B卷
  16. 智慧环保检测平台Axure原型图
  17. linux命令键盘快捷键,如何将Linux命令设置成键盘快捷键
  18. 平衡二叉树例题_平衡二叉树专题
  19. 大数据职业理解_大数据职业规划总结
  20. 微型计算机常用的输入设备分别是,微型计算机常见的基本输入输出设备有哪些?...

热门文章

  1. DELL R340 14G服务器的RAID划分
  2. CentOS7下Telegraf+InfluxDB+Grafana 搭建服务器监控平台
  3. CentOS 7.5 安装Zabbix4.4.4和Grafana6.4.4监控系统安装
  4. 数学公式【(1+1+2+1+2+3+1+2+3+4。。。)⇒n*(n+1)*(n+2)/6】
  5. IT结合测试时,准备数据的注意事项(之二:表之间的关系)。
  6. Spring+Dubbo集成Redis的两种解决方案
  7. 【火炉炼AI】深度学习008-Keras解决多分类问题
  8. 解决命令行的乱码以及编码的问题
  9. Nhibernate出现No row with the given identifier exists问题的产生原因及解决方法
  10. 七彩虹智能主板设置U盘启动教程