Springboot 集成Swagger和使用完整案例

口水话(急于集成的可以直接看下面集成代码):

之前测试接口,模块测试呢,一直用的是junit,用的时候还要自己去写对应代码。。。写完下来有比较耗时,而且又要删掉。个人不太喜欢 太复杂了
而且当同事需要用你这个接口的时候呢,还要打开你的代码去看你这个方法有哪些必传参数啥的。
swagger呢,就很方便了基于Restful风格 。当前端同事或者客户需要调你的接口时,浏览器打开swagger就知道怎么使用。很nice。

下面我们来开始集成
我的工程是springboot+spring+mybytis
先添加jar包依赖:

       <!-- swagger2 -->
       <dependency>
           <groupId>io.springfox</groupId>
           <artifactId>springfox-swagger2</artifactId>
           <version>2.8.0</version>
       </dependency>
       <!-- 使用默认风格 -->
       <dependency>
           <groupId>io.springfox</groupId>
           <artifactId>springfox-swagger-ui</artifactId>
           <version>2.8.0</version>
       </dependency>

依赖添加完后,就可以直接去写类配置启用了不需要到application.yml写关于swagger的任何配置
直接写类通过注解开启swagger配置:

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

@Configuration
@EnableSwagger2 // 启用Swagger2
public class Swagger2Config {
   // 访问地址:http://localhost:8080/swagger-ui.html
  // 创建API基本信息
  @Bean
  public Docket createRestApi() {
      return new Docket(DocumentationType.SWAGGER_2)
              .apiInfo(apiInfo())
              .select()
              // 扫描该包下的所有需要在Swagger中展示的API,@ApiIgnore注解标注的除外
              .apis(RequestHandlerSelectors.basePackage("com.house.controller")) 
              .paths(PathSelectors.any())
              .build();
  }

  // 创建API的基本信息,这些信息会在Swagger UI中进行显示
  @SuppressWarnings("deprecation")
  private ApiInfo apiInfo() {
      return new ApiInfoBuilder()
              .title("uni_house接口文档")								  // API 标题 (访问swagger2的最上面标题)
              .description("xxx管理平台服务接口")     				     // API描述 (API描述)
              .contact("3156826935@qq.com")						     	// 联系人
              .version("1.0")										    // 版本号
              .build();
  }
}

ok Swagger已经配好了。就等我们去用他了。来,我继续贴代码
注意这里的是pojo类

package com.house.vo;

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

@ApiModel(description = "用户详细信息")
@Data // 注意 这个是消除模板代码lomback包里面的注解 有需要的可以从我的下篇文章获取。或者去maven官网下
public class Person {

    @ApiModelProperty(value = "用户Id", position = 1)
    private Long id;

    @ApiModelProperty(value = "用户年龄", position = 2)
    private int age;

    @ApiModelProperty(value = "用户姓名", position = 3)
    private String name;

    @ApiModelProperty(value = "用户所在城市", position = 4)
    private String city;

    public Person(Long id,int age,String name,String city){
        this.id=id;
        this.age=age;
        this.city=city;
        this.name=name;
    }
}

ok pojo已经完成 现在我们去写controller对外API接口
来我继续贴代码:

package com.house.controller;

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.house.vo.Person;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@Api(tags = "用户相关接口")
@RestController
@RequestMapping(value = "/user")
public class PersonController {

    @ApiOperation(value = "用户详细信息", notes = "通过id获得用户详细信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "用户ID", required = true, paramType = "query", defaultValue = "0")})
    @GetMapping("/query")
    public Person  getById(@RequestParam(value="id",defaultValue = "0") Long id){
        return new Person(id,2,"小小","杭州");
    }

    //分页列表
    @ApiOperation(value = "删除用户信息", notes = "通过ID删除用户信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "用户ID", required = true, paramType = "query", defaultValue = "0")})
    @RequestMapping(value="delete",method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE )
    public String  delete(@RequestParam(value="id",defaultValue = "0") Long id){

        return "删除成功";
    }
}

至此所有swagger配置已完成

让我们来看看效果:
在这里插入图片描述
有哪里不会的可以给我留言,我看到会回复。或者哪里还可以优化,还请大佬指出!
点个赞再走吧,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值