2018-11-18 swagger2 自动生成API

作者:小莫 链接:https://www.zhihu.com/question/28119576/answer/134580038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原地址:

swagger ui和spring boot集成生成api文档

一、环境

1. JAVA8

2. MAVEN 3.0.5

3. IDEA 2016.2.5

4. spring boot 1.4.1

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

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.2.2</version>
</dependency>

三、配置

设置了一些默认显示的api相关信息,最后上截图的时就可以比较清楚的看到。

@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("info.xiaomo.website"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring Boot中使用Swagger2构建RESTful APIs")
                .description("api根地址:http://api.xiaomo.info:8080/")
                .termsOfServiceUrl("https://xiaomo.info/")
                .contact("小莫")
                .version("1.0")
                .build();
    }
}

四、相关注解解读

1. @Api

用在类上,说明该类的作用 @Api(value = "UserController", description = "用户相关api")

2. @ApiOperation

用在方法上,说明方法的作用 @ApiOperation(value = "查找用户", notes = "查找用户", httpMethod = "GET", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

3 @ApiImplicitParams

用在方法上包含一组参数说明

4. @ApiImplicitParam

用在@ApiImplicitParams注解中,指定一个请求参数的各个方面 paramType:参数放在哪个地方 header–>请求参数的获取:@RequestHeader query–>请求参数的获取:@RequestParam path(用于restful接口)–>请求参数的获取:@PathVariable body(不常用) form(不常用) name:参数名 dataType:参数类型 required:参数是否必须传 value:参数的意思 defaultValue:参数的默认值

@ApiImplicitParams({
        @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),
})

5. @ApiResponses

用于表示一组响应

6. @ApiResponse

用在@ApiResponses中,一般用于表达一个错误的响应信息 code:数字,例如400 message:信息,例如”请求参数没填好” response:抛出异常的类

@ApiResponses(value = {  
          @ApiResponse(code = 400, message = "No Name Provided")  
  })

7. @ApiModel

描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候) @ApiModel(value = "用户实体类")

8. @ApiModelProperty

描述一个model的属性 @ApiModelProperty(value = "登录用户")

五、 和Swagger UI的集成

首先,从github swagger-ui 上下载Swagger-UI, 把该项目dist目录下的内容拷贝到项目的resources的目录public下。

六、访问

http://localhost:8080/swagger-ui.html 就可以看到效果如下

七、 项目实例

syoubaku/xiaomo-info-java

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维

JavaScript 学习总结

Java和Javascript的区别就像印度和印度尼西亚的区别,名字中有点相同的东西。

49440
来自专栏即时通讯技术

微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅

本文由微信开发团队工程是由“oneliang”原创发表于WeMobileDev公众号,内容稍有改动。

32310
来自专栏javathings

JVM 线程和操作系统线程一一对应吗?

Java 的线程和操作系统的线程是一一对应的。使用 Java 线程就是使用一个操作系统本地线程。

62540
来自专栏hadoop学习笔记

Hanlp分词实例:Java实现TFIDF算法

关于TFIDF算法的介绍可以参考这篇博客http://www.ruanyifeng.com/blog/2013/03/tf-idf.html。

29040
来自专栏javathings

Java 内存模型简述

Java 内存在逻辑功能上分成 5 个区。方法区,堆区,JVM 栈,方法栈,程序计数器(PC 寄存器)。

19120
来自专栏javathings

Maven 的 Pom 中,dependencymanagement 和 dependencies 区别是什么(面试常问)

dependencyManagement 统一了 maven 中依赖的版本号,定义在 dependencies 中的依赖,在不指定具体版本号时,就会沿着上层找到...

42020
来自专栏javathings

解释一下 HashMap 的工作原理

HashMap 是基于散列表的数据结构。所谓散列表,它通过键值对的方式存储数据,把 key 通过散列算法计算出一个存储地址,将 value 放入这个地址中。散列...

53010
来自专栏javathings

深拷贝和浅拷贝的区别是什么,如何实现?

深拷贝是彻底的拷贝,两对象中所有的成员都是独立的一份,而且,成员对象中的成员对象也是独立一份。

1.8K30
来自专栏游戏杂谈

IE中的unknown类型

如果在type这段script内有vbTest的JavaScript函数声明,那么typeof得到的将会是function,vbscript中的vbTest将会...

15270
来自专栏javathings

volatile 解决了什么问题?

volatile 关键字是最常问到的问题,关于这个关键字的作用解释,网上的文章已经多如牛毛了。

40130

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励