博客详情

springboot项目中使用swagger2生成项目api文档 (原创)

作者: 朝如青丝暮成雪
发布时间:2019-08-08 23:14:23  文章分类:java编程   阅读(934)  评论(0)

集成swagger2生成项目api文档

1.pom.xml中引入相应依赖

<!-- swagger2  引入   -->
    <dependency>
        <groupId>com.spring4all</groupId>
        <artifactId>spring-boot-starter-swagger</artifactId>
        <version>1.5.1.RELEASE</version>
    </dependency>

2.SwaggerConfig.java 配置类

package com.tingcream.springmybatis.configuration;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * swagger2的配置类 
 * @author jelly
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

        @Bean
        public Docket docket(){
               Parameter parameter= new ParameterBuilder().name("Authorization").description("token头")
                         .modelRef(new ModelRef("string"))
                         .parameterType("header").required(false)
                         .defaultValue("").build();

                List<Parameter> pars = new ArrayList<Parameter>(); 
                pars.add(parameter);

            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //这里采用包含注解的方式来确定要显示的接口
                    .apis(RequestHandlerSelectors.basePackage("com.tingcream.springmybatis"))  //配置Swagger2包扫描路径
                    .paths(PathSelectors.any())
                    .build()
                    .globalOperationParameters(pars);//把全局 的http请求消息头加上

        }

        @Bean
        public ApiInfo apiInfo(){
            return new ApiInfoBuilder().title("springmybatis项目api文档")
                     .description("这是一些描述信息")
                     .contact(new Contact("张三", "http://www.tingcream.com", "zhangsan@123.com"))
                     .version("1.0")
                     .build();
        }

}

3.使用swagger注解生成restFul接口文档(示例)

GoodsController.java

package com.tingcream.springmybatis.sw.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.tingcream.springmybatis.common.RetMsg;
import com.tingcream.springmybatis.sw.model.Goods;
import com.tingcream.springmybatis.util.RandomUtil;

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


@Api(tags="商品管理")
@RequestMapping("/goods")
@RestController
public class GoodsController {

    @ApiImplicitParams({
        @ApiImplicitParam(name="id",value = "商品id",paramType = "query",dataType="long"),
    })
    @ApiOperation("根据id查询一个商品")
    @GetMapping("/findById")
    public RetMsg<Goods> findById( Long id){
        Goods goods= new Goods();
        goods.setGoodsId(id);
        goods.setGoodsName("商品名称:"+RandomUtil.getChars(3));
        goods.setGoodsPrice("13.45");
        goods.setRemark(RandomUtil.getChars(5));
        return RetMsg.success(goods);
    }

//    @ApiOperation("添加一个商品")
//    @PostMapping("/add")
//    public RetMsg<?> add(@Validated Goods goods) {
//        System.out.println("xxxx");
//        return RetMsg.success();
//    }

    @ApiOperation("添加一个商品")
    @PostMapping("/add")
    public RetMsg<?> add(@Validated @RequestBody Goods goods,HttpServletRequest request) {
        System.out.println("xxxx");

        String  token = request.getHeader("Authorization");
        System.out.println("token:"+token);

        return RetMsg.success();
    }

}

Goods.java

package com.tingcream.springmybatis.sw.model;

import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
public class Goods implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("商品id")
    private Long goodsId;

    @ApiModelProperty("商品名称")
    private String goodsName;

    @ApiModelProperty("商品价格")
    private String goodsPrice;//

    @ApiModelProperty("创建时间")
    private String createTime;//创建时间

    @ApiModelProperty("备注")
    private String remark;//备注

    public Long getGoodsId() {
        return goodsId;
    }

    public void setGoodsId(Long goodsId) {
        this.goodsId = goodsId;
    }

    public String getGoodsName() {
        return goodsName;
    }

    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }

    public String getGoodsPrice() {
        return goodsPrice;
    }

    public void setGoodsPrice(String goodsPrice) {
        this.goodsPrice = goodsPrice;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

}

RetMsg.java(改造为带泛型)

package com.tingcream.springmybatis.common;

import java.io.Serializable;

 /**
  * 返回消息
  * @author jelly
  *
  */
public class RetMsg<T> implements Serializable {
  /**
     * 
     */
  private static final long serialVersionUID = 1L;
  private int code;//返回状态码
  private String msg;//返回状态消息
  private T data ;//业务参数


  public static  <T> RetMsg<T> success(){
    return new RetMsg<T>(200,"成功");
  }
  public static <T>  RetMsg<T> success(T data){
    return new RetMsg<T>(200,"成功",data);
  }

  public static  <T> RetMsg<T> failure(){
      return new RetMsg<T>(300,"失败");
  }
  public static <T>  RetMsg<T> failure(String msg){
      return new RetMsg<T>(300,msg);
  }


  public RetMsg() {
  }

  public RetMsg(int code) {
    this.code = code;
  }
  public RetMsg(int code, String msg) {
    this.code = code;
    this.msg = msg;
  }
  public  RetMsg(int code, String msg,T data) {
    this.code = code;
    this.msg = msg;
    this.data=data;
  }


  public int getCode() {
    return code;
  }

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

  public String getMsg() {
    return msg;
  }

  public void setMsg(String msg) {
    this.msg = msg;
  }

  public T getData() {
    return data;
  }

  public void setData(T data) {
    this.data = data;
  }
}
关键字:  springboot  swagger
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号