第05章—Swagger2打造在线接口文档

spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html

码云源码地址:https://gitee.com/jinxiaohang/springboot

一、添加Swagger2依赖

<dependency><!--添加Swagger依赖 -->
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>
<dependency><!--添加Swagger-UI依赖 -->
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>

二、添加配置

package com.xiaohang.springbootswagger2.config;

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.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * 主要用途:开启在线接口文档和添加相关配置
 */

@Configuration //标记配置类
@EnableSwagger2 //开启在线接口文档
public class Swagger2Config {
    /**
     * 添加摘要信息(Docket)
     */
    @Bean
    public Docket controllerApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder()
                        .title("标题:jzh_用户信息管理系统_接口文档")
                        .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
                        .contact(new Contact("jzh", null, "[email protected]"))
                        .version("版本号:1.0")
                        .build())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.xiaohang.springbootswagger2.controller"))
                .paths(PathSelectors.any())
                .build();
    }
}

三、编写接口文档

  • @Api 描述类/接口的主要用途

  • @ApiOperation 描述方法用途

  • @ApiImplicitParam 描述方法的参数

  • @ApiImplicitParams 描述方法的参数(Multi-Params)

  • @ApiIgnore 忽略某类/方法/参数的文档

参考链接:http://blog.csdn.net/hj95815/article/details/78323766

Swagger2 使用注解来编写文档,只需要在控制层(controller)添加注解来描述接口信息即可。例如:

@Api("用户信息管理")
@RestController
@RequestMapping("/api/user/*")
public class UserController {

    @Autowired
    private UserService userService;

    @ApiOperation("获取用户列表")
    @GetMapping("list")
    public List userList() {
        return userService.list();
    }

    @ApiOperation("获取单个用户")
    @ApiImplicitParam(paramType="query",name = "userId", value = "单个用户Id", dataType = "String")
    @GetMapping("list/{userId}")
    public User getOne(@RequestParam String userId){
        return userService.getOne(userId);
    }

    @ApiOperation("存储单个用户")
    @ApiImplicitParam(name = "user", value = "单个用户信息", dataType = "json")
    @PostMapping(value = "save")
    public String save(@RequestBody User user) {
        if (userService.save(user))
            return user.toString();
        return "{\"msg\":\"error\"}";
    }

    @ApiOperation("更新单个用户")
    @ApiImplicitParam(name = "user", value = "单个用户信息", dataType = "json")
    @PutMapping("update")
    public String update(@RequestBody User user) {
        if(userService.update(user))
            return user.toString();
        return "{\"msg\":\"error\"}";
    }

    @ApiOperation("删除单个用户")
    @ApiImplicitParam(paramType="query",name = "userId", value = "单个用户Id", dataType = "String")
    @DeleteMapping("delete/{userId}")
    public String delete(@RequestParam String userId) {
        if (userService.delete(userId))
            return "{\"msg\":\"success\"}";
        return "{\"msg\":\"error\"}";
    }
}

四、汉化(可跳过)

参考链接:https://www.jianshu.com/p/840320d431a1  https://www.jianshu.com/p/7e543f0f0bd8

1、添加自定义页面

在resourece目录下创建\META-INF\resourece目录,然后创建一个名称为"swagger-ui.html" 的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/object-assign-pollyfill.js‘ type=‘text/javascript‘></script>
    <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-4.0.5.js‘ type=‘text/javascript‘></script>
    <script src=‘webjars/springfox-swagger-ui/lib/lodash.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.9.1.0.pack.js‘ type=‘text/javascript‘></script>
    <script src=‘webjars/springfox-swagger-ui/lib/highlight.9.1.0.pack_extended.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">![](webjars/springfox-swagger-ui/images/logo_small.png)<span class="logo__title">swagger</span></a>
        <form id=‘api_selector‘>
            <div class=‘input‘>
                <select id="select_baseUrl" name="select_baseUrl"></select>
            </div>
            <div class=‘input‘><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>
            <div id=‘auth_container‘></div>
            <div class=‘input‘><a id="explore" class="header__btn" href="#" data-sw-translate>Explore</a></div>
        </form>
    </div>
</div>

<div id="message-bar" class="swagger-ui-wrap" data-sw-translate> </div>
<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
</body>
</html>

2、添加配置

package com.xiaohang.springbootswagger2.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
class WebMvcConfig extends WebMvcConfigurerAdapter {
    @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/");
    }

}

3、在启动类上添加注解@EnableWebMvc

五、查阅接口文档

打开http://localhost:8080/swagger-ui.html

效果如下:

六、测试接口

更新中...

原文地址:https://www.cnblogs.com/jinxiaohang/p/8269971.html

时间: 2024-10-07 08:15:10

第05章—Swagger2打造在线接口文档的相关文章

使用swagger实现web api在线接口文档

一.前言 通常我们的项目会包含许多对外的接口,这些接口都需要文档化,标准的接口描述文档需要描述接口的地址.参数.返回值.备注等等:像我们以前的做法是写在word/excel,通常是按模块划分,例如一个模块包含n个接口,就形成一个文档,然后再用版本控制管理.这样做的缺点是: 1.不够直观,每次打开文档查看接口很麻烦 2.文档的维护难度大 3.调用方和测试人员使用麻烦,需要先去找接口,在用相应的工具测试(例如使用浏览器还可能要安装插件) 我们希望是可以直接在线浏览,然后直接用浏览器测试.而接口的详细

转:Swagger2自动生成接口文档和Mock模拟数据

转自:https://www.cnblogs.com/vipstone/p/9841716.html 一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二.返回数据操作难:数据返回不对或者不够怎么办?怎么才能灵活的操作数据? 这是很多公司前后端分离之后带来的困扰,那怎么来解决这些问题? 问题一的一般解决方案:后端团队共同维护一个在线文档,每次改接口再

强烈推荐 在线接口文档管理工具 小幺鸡 小团队可以省掉测试了

在朋友那儿看到一个不错的在线文档管理工具 主要特点 : 在线接口测试 在线测试,方便前后端开发,降低错误率.支持:xml.json.txt.binary.websocket 可视化编辑与分享 可视化编辑器,完善的分享机制,多功能导出.让接口撰写变得十分简单 安全保障 基于阿里云服务器,提供安全备份系统.多家公司使用,安全证明. 代码开源 可离线安装到内网服务器仅供公司内部使用.接口在线测试,降低接口错误率 开放源码,支持任意修改 简洁明了的API 简单的维护更新 多种导出满足不同需求 自己搭建试

免费在线接口文档

用途: 方便前端程序员调试代码或学习使用 接口域名:http://www.duans.top 文档所提供接口已解决了跨域请求的问题, 均可以进行跨域请求 常用接口 获取段子列表 接口地址: /freeApi/api.php?act=getJoke&page=1&count=10 请求方式: post get 参数 |参数名称| 是否必须 | 默认值 | 作用 | | page | 否 | 1 | 页码 | | count | 否 | 10 | 每页数据条数| 返回数据: json json

Asp Net Core Swagger自动生成接口文档

Swagger是什么 Swagger工具为你的Asp Net Core生成漂亮的API文档.目前社会上大部分都是一个服务端为N个客户端提供接口,往往我们需要提供一个友好的API文档,Swagger的出现,几乎使得API文档完全自动化. 开始使用Swagger 此处我们使用开发IDE为VsCode,输入dotnet new webapi -o SwaggerDemo 创建ASP.NET Core Web API项目 添加Swashbuckle.AspNetCore包(此处不讨论包的安装方法,请自行

SpringBoot + Swagger2 自动生成API接口文档

spring-boot作为当前最为流行的Java web开发脚手架,相信越来越多的开发者会使用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于移动端.在实际开发过程中,这些接口还要提供给开发测试进行相关的白盒测试,那么势必存在如何在多人协作中共享和及时更新API开发接口文档的问题. 假如你已经对传统的wiki文档共享方式所带来的弊端深恶痛绝,那么尝试一下Swagger2 方式,一定会让你有不一样的开发体验: 功能丰富 :支持多种注解,自动生成接

《MinDoc 接口文档在线管理系统》

项目简介 MinDoc 是一款针对IT团队开发的简单好用的文档管理系统. MinDoc 的前身是 SmartWiki 文档系统.SmartWiki 是基于 PHP 框架 laravel 开发的一款文档管理系统.因 PHP 的部署对普通用户来说太复杂,所以改用 Golang 开发.可以方便用户部署和实用,同时增加Markdown和HTML两种编辑器. 开发缘起是公司IT部门需要一款简单实用的项目接口文档管理和分享的系统.其功能和界面源于 kancloud . 可以用来储存日常接口文档,数据库字典,

[API]使用Blueprint来高雅的编写接口文档

Blueprint(http://apiary.io/)是apiary公司的工具包,用来编写API文档,类似于Markdown,是一种标记语言. 对于习惯使用RESTful API的同志们来说,使用Blueprint可以快速的写出高雅大气的文档: 下面以一个Github中的Gist服务为例,简单的演示一下Blueprint的应用. 原文地址:http://blog.callmewhy.com/2014/06/05/blueprint-tutorial/ API Blueprint是一套API描述

开发底层硬件应该怎么编写接口文档

开发底层硬件应该怎么编写接口文档 这几天在做超市RFID结算系统的上位机程序编写,用的是VB.NET.底层用的是别人开发好的SDK,为什么要写这一篇文章呢?最近因为手头设备的功能限制,我就在网上找其他的公司的RFID射频卡读写器,由于我是做上层开发,所以需要设备供应商提供底层SDK二次开发包,找了好多设备提供商 ,也跟他们索取各自提供的SDK,但总的来说,我还是觉得最先用的这个设备的厂家提供的SDK是最详细的,现在简单说明如下: 一.函数说明: 1.目录结构清晰: 2.函数返回值,参数用表格说明