博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从零搭建自己的SpringBoot后台框架(六)
阅读量:6575 次
发布时间:2019-06-24

本文共 4584 字,大约阅读时间需要 15 分钟。

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

一:什么是Swagger

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

二:添加Swagger2依赖

io.springfox
springfox-swagger2
2.4.0
io.springfox
springfox-swagger-ui
2.4.0
复制代码

然后鼠标右键选择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@EnableSwagger2public class SwaggerConfigurer {    @Bean    public 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 { @Resource private 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
selectById(@RequestParam Integer id) { UserInfo userInfo = userInfoService.selectById(id); return RetResponse.makeOKRsp(userInfo); } @PostMapping("/testException") public RetResult
testException(Integer id) { List a = null; a.size(); UserInfo userInfo = userInfoService.selectById(id); return RetResponse.makeOKRsp(userInfo); }}复制代码

注意参数前需加上@RequestParam

以上注解大家可以查看参考进行自定义添加

五:接口测试

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

六:解决问题

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

WebConfigurer 中添加如下代码

@Overridepublic 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

    
Swagger UI
 
复制代码

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

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

十:测试

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

十一:样式丑?更换ui

项目地址

码云地址:

GitHub地址:

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

结尾

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

转载地址:http://dogjo.baihongyu.com/

你可能感兴趣的文章
GIS-013-Cesium Terrain 数据生成
查看>>
java int与integer的区别
查看>>
UVALive3902 Network[贪心 DFS&&BFS]
查看>>
图像处理的基本概念
查看>>
039 hive中关于数据库与表等的基本操作
查看>>
Java Volatile关键字 以及long,double在多线程中的应用
查看>>
__slots__用法以及优化
查看>>
分部积分的图形解释
查看>>
idea常用快捷键大全(转)
查看>>
HashMap和Hashtable的区别 源码分析
查看>>
Git初始化仓库
查看>>
mysql利用timestamp来进行帖子排序
查看>>
SQL Server 管理常用的SQL和T-SQL
查看>>
Microsoft Orleans 之 入门指南
查看>>
MySoft.Data 2.7.3版本的GitHub托管(ORM升级封装)
查看>>
eclipse各版本代号
查看>>
mysql 配置 utf8 依然乱码
查看>>
089实战 Nginx的安装
查看>>
Laravel 使用多个数据库的问题。
查看>>
overridePendingTransition简介
查看>>