swagger2的简单使用

优点:

可以生成文档形式的API并提供给不同的团队使用

便于自己单测

无需过多冗余的word文档,这一点很重要,因为我在工作中就遇到这么一个情况,由于开发使用的文档和最新文档版本导致不一致,导致后期很烦人

=使用swagger流程=

1.引入pom依赖

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

2.新建swagger2配置类

new class Swagger2

@Configuration //使用配置类注解
@EnableSwagger2 //启用这个配置类
public class Swagger2 {
/**
* @Description:swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
*/
@Bean //配置这个bean是为了让swagger扫描到controller
public Docket createRestApi() { // 为swagger添加header参数可供输入
// ParameterBuilder userTokenHeader = new ParameterBuilder();
// ParameterBuilder userIdHeader = new ParameterBuilder();
// List<Parameter> pars = new ArrayList<Parameter>();
// userTokenHeader.name("headerUserToken").description("userToken")
// .modelRef(new ModelRef("string")).parameterType("header")
// .required(false).build();
// userIdHeader.name("headerUserId").description("userId")
// .modelRef(new ModelRef("string")).parameterType("header")
// .required(false).build();
// pars.add(userTokenHeader.build());
// pars.add(userIdHeader.build()); return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.basePackage("com.csylh.controller"))
.paths(PathSelectors.any()).build();
// .globalOperationParameters(pars);
} /**
* @Description: 构建 api文档的信息
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 设置页面标题
.title("swagger2构建接口数据文档,这里是文档的标题")
// 设置联系人
.contact(new Contact("留歌", "http://csylh.cn", "csylh36@163.com"))
// 描述
.description("留歌短视频,这里是描述信息")
// 定义版本号
.version("V-1.0").build();
} }

3.配置controller类,方法和实体类

3.1对于某一个Controller添加一个API====@Api

@Api:用在请求的类上,表示对类的说明

- tags="说明该类的作用,可以在UI界面上看到的注解"

- value="该参数没什么意义,在UI界面上也看到,所以不需要配置"

案例:

@Api(value = "用户注册登录接口",tags = {"登录注册注销的controller"})

public class UserController{}

3.2对于Controller不同的接口(方法)进行定义==@ApiOperation

@ApiOperation:用在请求的方法上,说明方法的用途、作用

- value="说明方法的用途、作用"

- notes="方法的备注说明"

案例:

@ApiOperation(value = "用户注册接口", notes="这是用户注册的接口,随便写都可以")

public ServerResponse register(@RequestBody Users user){

return iUserService.register(user);

}

接下来对方法参数情况进行分类

情况一:(String userId,String fanId)参数场景

方法参数的问题:上面的是@RequestBody这样的场景,有的时候就是一个个参数 (String userId,String fanId)

我们就可以使用@ApiImplicitParams来定义参数

@ApiImplicitParams:用在请求的方法上,表示一组参数说明

- @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面

- name:参数名

- value:参数的汉字说明、解释

- required:参数是否必须传

- paramType:参数放在哪个地方

header --> 请求参数的获取:@RequestHeader

query --> 请求参数的获取:@RequestParam

path(用于restful接口)--> 请求参数的获取:@PathVariable

body(不常用)

form(不常用)

- dataType:参数类型,默认String,其它值dataType="Integer"

- defaultValue:参数的默认值

案例:

@ApiOperation(value="用户头像上传", notes="用户头像上传接口")

@ApiImplicitParam(name="userId", value="用户id", required=true,

dataType="String", paramType="query")

public ServerResponse uploadIcon(String userId,@RequestParam("file") MultipartFile[] files) throws IOException {

return iUserService.uploadIcon(userId,files);

}

情况二:参数是使用@RequestBody这样的场景

上面这样基本配置之后其实也是可以进行运行的,但是我们更好的是可以对传入的users参数做一些限制,例如,传入的username参数字段不能为空等

操作: 跟进Users这个实体类进行配置

因为Users是一个实体,所以就要定义为@ApiModel

@ApiModel:用于响应类上,表示一个返回响应数据的信息

这种一般用在post创建的时候,使用@RequestBody这样的场景

请求参数无法使用@ApiImplicitParam注解进行描述的时候)

案例:

@ApiModel(value = "用户对象,这里是解释",description = "这是用户对象,这里是描述")

public class Users {}

实体类上字段的处理

=前端必须传入过来的字段情况=@ApiModelProperty

//用户名字段
@ApiModelProperty(value = "用户名",name = "username",example = "liuge36",required = true)
private String username;
//前端传过来的密码字段
@ApiModelProperty(value = "密码",name = "password",example = "123456",required = true)
private String password;

====前端不需要传入过来的字段情况,不需要显示 @ApiModelProperty(hidden = true)

@ApiModelProperty(hidden = true)

private String id;

这样就不会显示出来了

===到这里,基本的使用就到位了,后期有机会跟新更多swagger2的用法

补充:定义包扫描

@MapperScan(basePackages="com.csylh.mapper")

swagger2的简单使用的更多相关文章

  1. 十、Spring boot 简单优雅的整合 Swagger2

    前言 swagger2 是什么,我这里就不说了,就是一个简单的接口文档,方便前后端联调. 其实之前没有想要到要使用swagger 的.因为我之前用的是YAPI ,不过这个是一个单独的工具.并且是开源的 ...

  2. Spring Boot 2.x (十二):Swagger2的正确玩儿法

    Swagger2简介 简单的来说,Swagger2的诞生就是为了解决前后端开发人员进行交流的时候API文档难以维护的痛点,它可以和我们的Java程序完美的结合在一起,并且可以与我们的另一开发利器Spr ...

  3. Spring Boot 集成 Swagger2 与配置 OAuth2.0 授权

    Spring Boot 集成 Swagger2 很简单,由于接口采用了OAuth2.0 & JWT 协议做了安全验证,使用过程中也遇到了很多小的问题,多次尝试下述配置可以正常使用. Maven ...

  4. 整合swagger2生成Restful Api接口文档

    整合swagger2生成Restful Api接口文档 swagger Restful文档生成工具 2017-9-30 官方地址:https://swagger.io/docs/specificati ...

  5. 谈谈Java常用类库中的设计模式 - Part Ⅰ

    背景 最近一口气看完了Joshua Bloch大神的Effective Java(下文简称EJ).书中以tips的形式罗列了Java开发中的最佳实践,每个tip都将其意图和要点压缩在了标题里,这种做法 ...

  6. Spring的学习与实战

    目录 一.Spring起步 学习路线图 Spring的基础知识 什么是Spring Spring框架核心模块 SpringBoot 第一个Spring应用DEMO 编写自己的第一个SpringMVC例 ...

  7. 【分布式】-- 基于Nacos、OpenFeign搭建的微服务抽奖系统后台小案例

    1.项目介绍 最近入项目之前要求熟悉一下SpringCloud Nacos微服务基于Feign接口调用并整合Swagger2进行接口文档展示给前端,所以自己按照要求来编写并整合了一套基于SpringC ...

  8. swagger2简单使用

    1.引入jar <!--引入swagger--> <dependency> <groupId>io.springfox</groupId> <ar ...

  9. Swagger2简单使用教程

    Swagger2简单使用教程 1.简介 ​ Swagger是为了解决企业中接口(api)中定义统一标准规范的文档生成工具.很多采用前后端分离的模式,前端只负责调用接口,进行渲染,前端和后端的唯一联系, ...

随机推荐

  1. Flink快速入门--安装与示例运行

    flink是一款开源的大数据流式处理框架,他可以同时批处理和流处理,具有容错性.高吞吐.低延迟等优势,本文简述flink在windows和linux中安装步骤,和示例程序的运行. 首先要想运行Flin ...

  2. vi 多行注释与取消

    多行注释 1.在命令行模式下,按 Shift + v 进入 VISUAL LINE 模式 2.选择要注释内容 3.按下 Ctrl + Shift + v 锁定块(XShell中) 或 按下 Ctrl ...

  3. 深刻剖析spring三种注入方式以及使用注解的原理

    概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO ...

  4. emlog博客的安装教程

    简介 emlog 是一款基于PHP和MySQL的功能强大的博客及CMS建站系统.致力于为您提供快速.稳定,且在使用上又极其简单.舒适的内容创作及站点搭建服务. 安装步骤 1.将src文件夹下的所有文件 ...

  5. PHP识别简单的图片上面的数字(可扩展)

    1.场景 最近在学习图片处理,就是特意把数字生成一个图片,然后再用程序去识别图片的数字.这就有了一下的学习过程. 2.原理分析 2.1 首先是将图片像素化,二值化,然后和字模去对比(需要相对于配置字模 ...

  6. Win10下安装python3.x+pycharm+autopep8

    一.安装Python3.X 1.Pythong官方网站:http://python.org/getit/   下载windows的安装包.有以下几个选项: 这里选择windows x86-64 exc ...

  7. gym/102021/J GCPC18 模拟拼图

    模拟拼图 题意: 给定n块拼图,每个拼图为四方形,对应四条边有四个数字,如果为0,表示这个边是在边界的,其他数字表示和另一个拼图的一条边相接.保证每个非零数只出现两次. 思路: 模拟,但是要注意几个情 ...

  8. hdu 6215 Brute Force Sorting(模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6215 题解:类似双链表的模拟. #include <iostream> #include ...

  9. Patch

    http://www.cnblogs.com/cute/archive/2011/04/29/2033011.html zhezhelin diff和patch使用指南 diff和patch是一对工具 ...

  10. 告别组件之教你使用原生js和css写移动端轮播图

    在工作中由于项目需要要写一个轮播图,本想使用组件直接调用实现快速开发,但是一想到自己经常使用组件但是让自己手写的话确实一点都不会. 一个不会手写组件的前端程序员不是一个好程序员!于是打算自己手写一个. ...