Springboot+swagger2的接口文档开发

一、创建一个SpringBoot项目

1.

2.

3.

4. 把web里的web选中,SQL里选择自己需要的,点击next

二、创建各项所需的controller,configure等

1. 项目布局

2. 引入的包

       <!-- swagger2所用的包 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>

3. swagger配置类,配置类有多种方法,试过使用.apis(RequestHandlerSelectors.basePackage("com.txp.controller"))的方法扫描controller包的位置,结果访问swagger页面的时候显示不出来,应该是没有扫描到,所以使用了下面的方法,即所有使用@ApiOperation注解的类都会被扫描

 1 package com.txp.swagger2.configue;
 2
 3 import io.swagger.annotations.ApiOperation;
 4 import org.springframework.context.annotation.Bean;
 5 import org.springframework.context.annotation.Configuration;
 6 import springfox.documentation.builders.ApiInfoBuilder;
 7 import springfox.documentation.builders.RequestHandlerSelectors;
 8 import springfox.documentation.service.ApiInfo;
 9 import springfox.documentation.spi.DocumentationType;
10 import springfox.documentation.spring.web.plugins.Docket;
11 import springfox.documentation.swagger2.annotations.EnableSwagger2;
12
13 // 用@Configuration注解该类,等价于XML中配置beans;用@Bean标注方法等价于XML中配置bean。
14 @Configuration
15 @EnableSwagger2
16 public class Swagger {
17
18     @Bean
19     public Docket api(){
20         return new Docket(DocumentationType.SWAGGER_2)
21                 .apiInfo(apiInfo())
22                 .select()
23                 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
24                 .build();
25     }
26
27     private ApiInfo apiInfo(){
28         return new ApiInfoBuilder()
29                 .title("springboot利用swagger构建api文档") // 页面标题
30                 .description("简单优雅的restful风格") // 创建人
31                 .termsOfServiceUrl("")
32                 .version("1.0")// 版本号
33                 .description("测试springboot结合swagger2")// 描述
34                 .build();
35     }
36 }

4. 实体类User,JsonResult

 1 package com.txp.swagger2.configue;
 2
 3 import java.util.Date;
 4
 5 public class User {
 6
 7     private int id;
 8     private String username;
 9     private int age;
10     private Date ctm;
11
12     public int getId() {
13         return id;
14     }
15
16     public void setId(int id) {
17         this.id = id;
18     }
19
20     public String getUsername() {
21         return username;
22     }
23
24     public void setUsername(String username) {
25         this.username = username;
26     }
27
28     public int getAge() {
29         return age;
30     }
31
32     public void setAge(int age) {
33         this.age = age;
34     }
35
36     public Date getCtm() {
37         return ctm;
38     }
39
40     public void setCtm(Date ctm) {
41         this.ctm = ctm;
42     }
43 }

 1 package com.txp.swagger2.configue;
 2
 3 public class JsonResult {
 4
 5     private String status = null;
 6
 7     private Object result = null;
 8
 9     public String getStatus() {
10         return status;
11     }
12
13     public void setStatus(String status) {
14         this.status = status;
15     }
16
17     public Object getResult() {
18         return result;
19     }
20
21     public void setResult(Object result) {
22         this.result = result;
23     }
24 }

5. UserController类

 1 package com.txp.swagger2.controller;
 2
 3 import com.txp.swagger2.configue.JsonResult;
 4 import com.txp.swagger2.configue.User;
 5 import io.swagger.annotations.ApiImplicitParam;
 6 import io.swagger.annotations.ApiOperation;
 7 import org.springframework.http.ResponseEntity;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 import org.springframework.web.bind.annotation.RequestMethod;
10 import org.springframework.web.bind.annotation.RestController;
11
12 import java.util.*;
13
14 @RestController
15 public class UserController {
16
17     static Map<Integer, User> users = Collections.synchronizedMap(new HashMap<Integer,User>());
18
19     @ApiOperation(value = "获取用户详细信息",notes = "根据url的id来获取用户详细信息")
20     @ApiImplicitParam(name = "id",value = "用户ID",required = true, dataType = "Integer", paramType = "path")
21     @RequestMapping(value = "users",method = RequestMethod.GET)
22     public ResponseEntity<JsonResult> getUserById(){
23         JsonResult r = new JsonResult();
24         try{
25             List<User> userList = new ArrayList<User>(users.values());
26             r.setResult(userList);
27             r.setStatus("ok");
28         } catch (Exception e){
29             r.setResult(e.getClass().getName() + ":" + e.getMessage());
30             r.setStatus("error");
31             e.printStackTrace();
32         }
33
34         return ResponseEntity.ok(r);
35     }
36 }

6. 启动类配置

 1 package com.txp.swagger2;
 2
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 6 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 7
 8 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
 9 // 加上注解@EnableSwagger2 表示开启Swagger
10 @EnableSwagger2
11 public class Swagger2Application {
12
13     public static void main(String[] args) {
14
15         SpringApplication.run(Swagger2Application.class, args);
16     }
17
18 }

三、结果

四、Swagger注解

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

  • @Api:修饰整个类,描述Controller的作用
  • @ApiOperation:描述一个类的一个方法,或者说一个接口
  • @ApiParam:单个参数描述
  • @ApiModel:用对象来接收参数
  • @ApiProperty:用对象接收参数时,描述对象的一个字段
  • @ApiResponse:HTTP响应其中1个描述
  • @ApiResponses:HTTP响应整体描述
  • @ApiIgnore:使用该注解忽略这个API
  • @ApiError :发生错误返回的信息
  • @ApiImplicitParam:一个请求参数
  • @ApiImplicitParams:多个请求参数

补充常用参数、属性

备注(各参数意义):

作用范围	API	使用位置
对象属性	@ApiModelProperty	用在出入参数对象的字段上
协议集描述	@Api	用于controller类上
协议描述	@ApiOperation	用在controller的方法上
Response集	@ApiResponses	用在controller的方法上
Response	@ApiResponse	用在 @ApiResponses里边
非对象参数集	@ApiImplicitParams	用在controller的方法上
非对象参数描述	@ApiImplicitParam	用在@ApiImplicitParams的方法里边
描述返回对象的意义	@ApiModel	用在返回对象类上

@ApiImplicitParam参数:

属性	取值	作用
paramType		查询参数类型
path	以地址的形式提交数据
query	直接跟参数完成自动映射赋值
body	以流的形式提交 仅支持POST
header	参数在request headers 里边提交
form	以form表单的形式提交 仅支持POST
dataType		参数的数据类型 只作为标志说明,并没有实际验证
Long
String
name		接收参数名
value		接收参数的意义描述
required		参数是否必填
true	必填
false	非必填
defaultValue		默认值

原文地址:https://www.cnblogs.com/txppp/p/10902211.html

时间: 2024-10-02 19:06:44

Springboot+swagger2的接口文档开发的相关文章

网络推币机接口文档开发解决方案

全局返回码说明 获取accesstoken 接口调用说明 请求参数说明 返回说明 返回参数说明 获取在线设备列表 调用说明 请求参数说明 返回说明 返回参数说明 设置回调地址 调用说明 请求参数说明 返回说明 返回参数说明 启动游戏 调用说明 请求参数说明 返回说明 返回参数说明 2.游戏开始回调 调用说明 请求参数说明 返回参数说明 3.游戏结束回调 调用说明 请求参数说明 返回参数说明 4.出物回调 调用说明 请求参数说明 返回说明 返回参数说明 5.机器出错回调 调用说明 请求参数说明 返

SpringFox swagger2 and SpringFox swagger2 UI 接口文档生成与查看

依赖: <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependen

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

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

SpringBoot+rest接口+swagger2生成API文档+validator+mybatis+aop+国际化

代码地址:JillWen_SpringBootDemo mybatis 1. 添加依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.version}</version> </dependency> &

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

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

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

app后端开发二:API接口文档工具

悲伤的历史 在进行app后端开发过程中,后端会提供出来很多的api接口供前端开发使用,为了让前端开发人员顺利使用,我们会写好一份文档,告诉他们这个接口你该用 GET 还是 POST 来访问,同时访问的时候该给我传递一些什么参数,以及正确的时候我会返回什么给你,已经返回的数据样式以及字段解释等等这些事情,我们都需要在文档中写好写清楚. 在 app后端开发一:基于swagger-ui构建api接口文档工具 这篇博客中,我写了 swagger-ui 的好处以及优势.但是在使用过程中,发现不够给力.我想

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

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

开发接口文档--本接口文档是读取控制器方法上的注释自动生成的

本文档是参考网上的然后根据公司需要对代码进行了抽取和优化(主要是加了标题栏和对输出进行了格式化输出,更换呢了页面渲染方式(改为直接使用php进行渲染,原来的是使用了模板引擎),可读性较好),配置简单,读取方便,和项目耦合性较小,只需要将api_view这个文件夹放到和项目同级就可以使用,接口文档只有100多k大小 1.配置控制器 按照上图格式写接口方法注释(主是在控制器上面和方法上) 2.将接口文档放置在和项目同级 注:上面3个事项目,最下面的是接口文档 3.配置接口文档配置文件 api_vie