SpringBoot Swagger2整合

Swagger简介 

Swagger是一款Restful接口的文档在线自动生成+功能测试的软件。
 
Swagger是一个规范和完整的框架。用于生成、描述、调用和可视化Restful风格的Web服务。总体目标是使客户端和文件系统

作为服务器以同样的速度 来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。  

SpringBoot整合Swagger2

SpringBoot整合Swagger2只需要以下几个步骤:

Step1.导入依赖:                                                                                                  
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.7.0</version>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.7.0</version>
		</dependency>

Step2.新建一个Swagger的配置类

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

/**
 * Created by chendai on 2018/3/21.
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
//                   当前包路径
                   .apis(RequestHandlerSelectors.basePackage("com.reset.controller"))
                    .paths(PathSelectors.any()).build();

    }
//构建api文档的详细信息函数
    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                //页面标题
                    .title("springBoot测试使用Swagger2构建RESTful API")
                //创建人
                    .contact(new Contact("chendai","http://www.baidu.com",""))
                 //版本号
                    .version("1.0")
                //描述
                    .description("API 描述")
                    .build();
    }
}

Step3.使用Swagger2进行测试:
  使用Swagger2进行测试的类我们选择在controller层:
package com.reset.controller;

import com.reset.model.RestMessgae;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;

/**
 * Created by chendai on 2018/3/19.
 */
@RestController
@Api("swaggerTestController相关api")
public class TestController {

    /**
     * Restful Get请求测试
     */
    @ApiOperation(value = "根据id查询学生的信息",notes = "查询数据库中某个学生的信息")
    @ApiImplicitParam(name ="id",value = "学生id",paramType = "path",required = true,dataType = "String")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id",value = "用户id",dataType = "String",paramType = "query",example = "1112")
    })
    @ApiResponses({
            @ApiResponse(code=400,message = "请求参数没有填好"),
            @ApiResponse(code=404,message="请求路径没有找到")
    })
    @GetMapping(value = "testRest/{id}")
    public RestMessgae testGetResetful(@PathVariable String id){
       RestMessgae restMessgae = new RestMessgae();
        System.out.println(id);
        return restMessgae;
    }
    
}

打开浏览器访问“ http://localhost:8080/swagger-ui.html”会看到如下的界面

在输入框中输入id的值后点击”Try it out“按钮,我们可以查看到下面的结果:


这样测试结果就非常的明显了。

Swagger2注解说明

@Api():作用于类上,表示这个类是swagger的资源。
    tags = ”说明该类的作用“
@ApiOperation():用在请求的方法上,说明的方法的用户和作用

    value=“说明方法的用途、作用”
    notes="方法的备注说明“
@ApiImplicitParams():用在请求的方法上,表示一组参数说明,可以包含多个 @ApiImplicitParam()

@ApiImplicitParam():指定一个请求参数的各个方面

       name:参数名
       value:参数的汉字说明
       required:参数是否必须传
       dataType:参数类型
       defaultValue:参数的默认值

@ApiResponses():用在请求的方法上,表示一组响应。可以包含多个 @ApiResponse()
@ApiResponse():用于表示一个错误的响应信息

    code:数字
    message:信息
    response:抛出异常的类      

@ApiModel():用在响应类上,表示一个返回响应数据的信息。
@ApiModelProperty():用在属性上,描述响应类的属性

@ApiModel() 和  @ApiModelProperty() 使用示例如下:

package com.reset.model;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * Created by chendai on 2018/3/21.
 */
@ApiModel(description = "返回响应数据")
public class RestMessgae {

    @ApiModelProperty(value = "错误信息")
    private String message;
    @ApiModelProperty(value = "状态码")
    private String code;
    @ApiModelProperty(value = "返回的数据")
    private Object data;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值