SpringBoot2.0系列教程(六)Springboot框架添加Swagger2来在线自动生成接口的文档+测试功能

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

一:什么是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 {

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

?

项目地址

码云地址: https://gitee.com/beany/mySpringBoot

GitHub地址: https://github.com/MyBeany/mySpringBoot

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

?

结尾

springboot添加Swagger2来在线自动生成接口的文档+测试功能已完成,后续功能接下来陆续更新。另求各路大神指点,感谢大家。

原文地址:https://www.cnblogs.com/mrBeany/p/10649650.html

时间: 2024-10-15 00:17:45

SpringBoot2.0系列教程(六)Springboot框架添加Swagger2来在线自动生成接口的文档+测试功能的相关文章

使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能

在以往的开发过程当中,我会经常选择EF框架作为底层数据结构,EF为我们提供了很好的ado.net数据访问机制,他覆盖了数据链接,linq等多方面内容,而且当我们使用数据库优先或者code first的时候都体现出明显的优势. 一键生成实体,免除手写model的烦恼. 实时更新数据结构,使数据库与model保持高度一致. 提供多种底层数据的访问方法. 优雅的语法,对于我这种喜爱偷懒的程序猿是一大福音. 然而entity framework在vs中生成的.edmx文件,会导致摘要(说明)为空的bug

SpringBoot2.0系列教程(五)Springboot框架添加全局异常处理

Hello大家好,本章我们添加全局异常处理.另求各路大神指点,感谢 一:为什么需要定义全局异常 在互联网时代,我们所开发的应用大多是直面用户的,程序中的任何一点小疏忽都可能导致用户的流失,而程序出现异常往往又是不可避免的,所以我们需要对异常进行捕获,然后给予相应的处理,来减少程序异常对用户体验的影响 二:添加业务类异常 在前面说过的ret文件夹下创建ServiceException package com.example.demo.core.ret; import java.io.Seriali

SpringBoot2.0系列教程(七)Springboot框架添加PageHelper分页查询功能

Hello大家好,本章我们添加PageHelper分页查询功能.另求各路大神指点,感谢 一:什么是PageHelper PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件 物理分页 支持常见的 12 种数据库.Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等 支持多种分页方式 支持常见的RowBounds(PageRowBounds),PageHelper.startPage 方法调用,Mapper 接口参数调用

Enterprise Library 5.0 系列教程

1. Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (初级) 2. Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级) 3. Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级) 4. Microsoft Enterpr

[译]JavaFX 2.0+系列教程-使用内置的布局面板(4)-垂直盒子(VBox)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(4)-垂直盒子(VBox) 垂直盒子 VBox 和水平盒子 HBox 很类似,只是其包含的节点是在单列中进行排列.图 1-4 显示了一个VBox的示例. 图 1-4 VBox示例 内边距(Padding)属性可以设置节点到VBox边缘的空隙.空间(Spacing)属性可以设置节点之间的间隙.边缘(Margin)属性可以为每个节点增加额外的环绕空间. 代码片段 例 1-3 创建了一个VBox,其中包含了一系列的选项. 例 1-3 创建VBo

[译]JavaFX 2.0+系列教程-使用内置的布局面板(3)-水平盒子(HBox)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(3)-水平盒子(HBox) 水平盒子 HBox 为多个节点排列在一行中提供了一个简单的方法. 图 1-2 是HBox的一个示例. 图 1-2 HBox示例 内边距(Padding)属性可以设置节点到HBox边缘的空隙.空间(Spacing)属性可以设置节点之间的间隙.样式(Style)属性可以设置背景颜色. 代码片段 例 1-2 创建了一个HBox,实现了一个工具栏(ToolBar)的效果,其中包含了两个按钮. 例 1-2 创建HBox

[译]JavaFX 2.0+系列教程-使用内置的布局面板(2)-边框面板(BorderPane)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(2)-边框面板(BorderPane) 边框面板 BorderPane 将面板划分为5个区域来放置界面元素:上.下.左.右.中. 图 1-1 显示了边框面板的布局示意图.每个区域的大小是没有限制的.在你使用边框面板时,如果不需要某个区域,你只要不为该区域设置内容,该区域则不会被分配显示空间,自然也就不会显示. 图 1-1 边框面板布局示意图 边框面板是我们经常见到的一个非常经典的布局效果:上面是菜单栏和工具栏,下面是状态栏,左边是导航面板

C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)

原文:C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件) 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C#微信公众号开发系列教程四(接收普通消息) C#微信公众号开发系列教程五(接收事件推送与消息排重) C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件) 第四,第五章已经讲了怎么处理用户发送的消息,本章就来讲讲怎么响应用户的

Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型

Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型 在这一节中,你将添加用于管理数据库中电影的类.这些类是ASP.NET MVC应用程序的模型部分. 你将使用.NET Framework框架下的实体框架(Entity Framework)数据访问技术,与模型类协同工作.实体框架(常简称为EF)支持一种称之为编码先行(Code First)的开发模式.编码先行使你通过编写简单的类(简称为POCO类,全称为"plain-old CLR objects."),来创建模型对象