欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot整合Swagger2的示例

程序员文章站 2022-06-22 19:12:13
一、导入maven包  io.springfox spring...

一、导入maven包 

<dependency>
  <groupid>io.springfox</groupid>
  <artifactid>springfox-swagger2</artifactid>
  <version>2.9.2</version>
</dependency>
<dependency>
  <groupid>io.springfox</groupid>
  <artifactid>springfox-swagger-ui</artifactid>
  <version>2.9.2</version>
</dependency>

二、添加工具类

@configuration
@enableswagger2
public class swaggerconfig {
  @bean
  public docket createrestapi() {
    return new docket(documentationtype.swagger_2)
        .pathmapping("/")
        .select()
        .apis(requesthandlerselectors.basepackage("com.nvn.controller"))
        .paths(pathselectors.any())
        .build().apiinfo(new apiinfobuilder()
            .title("springboot整合swagger")
            .description("springboot整合swagger,详细信息......")
            .version("1.0")
            .build());
  }
}

三、添加注解

@restcontroller
@api(tags = "用户管理相关接口")
@requestmapping("/user")
public class usercontroller {

  @postmapping("/")
  @apioperation("添加用户的接口")
  @apiimplicitparams({
      @apiimplicitparam(name = "username", value = "用户名", defaultvalue = "李四"),
      @apiimplicitparam(name = "address", value = "用户地址", defaultvalue = "深圳", required = true)
  }
  )
  public respbean adduser(string username, @requestparam(required = true) string address) {
    return new respbean();
  }

  @getmapping("/")
  @apioperation("根据id查询用户的接口")
  @apiimplicitparam(name = "id", value = "用户id", defaultvalue = "99", required = true)
  public user getuserbyid(@pathvariable integer id) {
    user user = new user();
    user.setid(id);
    return user;
  }
  @putmapping("/{id}")
  @apioperation("根据id更新用户的接口")
  public user updateuserbyid(@requestbody user user) {
    return user;
  }
}

四、注解说明

  • @api注解可以用来标记当前controller的功能。
  • @apioperation注解用来标记一个方法的作用。
  • @apiimplicitparam注解用来描述一个参数,可以配置参数的中文含义,也可以给参数设置默认值,这样在接口测试的时候可以避免手动输入。
  • 如果有多个参数,则需要使用多个@apiimplicitparam注解来描述,多个@apiimplicitparam注解需要放在一个@apiimplicitparams注解中。
  • @apiimplicitparam注解中虽然可以指定参数是必填的,但是却不能代替@requestparam(required = true),前者的必填只是在swagger2框架内必填,抛弃了swagger2,这个限制就没用了,所以假如开发者需要指定一个参数必填,@requestparam(required = true)注解还是不能省略。

五、如果参数是一个对象,对于参数的描述可以放在实体类中。

@apimodel
public class user {
  @apimodelproperty(value = "用户id")
  private integer id;
  @apimodelproperty(value = "用户名")
  private string username;
  @apimodelproperty(value = "用户地址")
  private string address;
  //getter/setter
}

六、效果

SpringBoot整合Swagger2的示例

附:如果我们的spring boot项目中集成了spring security,那么如果不做额外配置,swagger2文档可能会被拦截,此时只需要在spring security的配置类中重写configure方法,添加如下过滤即可:

@override
public void configure(websecurity web) throws exception {
  web.ignoring()
      .antmatchers("/swagger-ui.html")
      .antmatchers("/v2/**")
      .antmatchers("/swagger-resources/**");
}

以上就是springboot整合swagger2的示例的详细内容,更多关于springboot整合swagger2的资料请关注其它相关文章!