有待学习程序员首页投稿(暂停使用,暂停投稿)

spring boot 集成Swagger2

2017-08-28  本文已影响282人  搁浅的双鱼

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。当项目前后端分离或者后台给APP提供接口时,这时候使用swagger来管理接口还是很方便的,省去了很多开发人员对接的时间。

先来个图展示下效果
image.png
接下来开始实现这个功能
        <!-- Swagger2强大RESTful API文档 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!-- Swagger2强大RESTful API文档 -->
@Configuration
@EnableSwagger2
public class Swagger2 {
  // Swagger2默认将所有的Controller中的RequestMapping方法都会暴露,
  // 然而在实际开发中,我们并不一定需要把所有API都提现在文档中查看,这种情况下,使用注解
  // @ApiIgnore来解决,如果应用在Controller范围上,则当前Controller中的所有方法都会被忽略,
  // 如果应用在方法上,则对应用的方法忽略暴露API


  @Bean
  public Docket createRestApi() {
      return new Docket(DocumentationType.SWAGGER_2)
              .apiInfo(apiInfo())
              .select()
              .apis(RequestHandlerSelectors.basePackage("com.daiwei.project")) //指向你的包
              .paths(PathSelectors.any())
              .build();
  }

  private ApiInfo apiInfo() {
      return new ApiInfoBuilder()
              .title("Sword项目的RESTful APIs")
              .description("Sword项目的RESTful APIs")
              .termsOfServiceUrl("http://www.jianshu.com/u/61959c6c46fa")
              .contact("David inner")
              .version("2.0")
              .build();
  }

}
/**
     * 删除
     * 方法功能说明
     * 创建时间 2017年7月25日 下午10:59:17
     * 开发者 david
     * @参数: @param ids
     * @参数: @return 
     * @return: Result
     */
    @ApiOperation(value = "删除企业", notes = "根据url的ids来指定删除对象或者对象集")
    @ApiImplicitParam(name = "ids", value = "企业ids", required = true, dataType = "String")
    @ResponseBody
    @RequestMapping(value = "/delete",method=RequestMethod.DELETE)
    public Result delete(String ids) {
        List<Long> list = Utils.stringToLongList(ids, ",");
        for(Long id:list){
            companyService.companyDao.delete(id);
        }
        return Result.ok("删除成功!");
    }
    
    /**
     * 保存企业
     * @param company
     * @return
     */
    @ApiOperation(value = "保存/修改企业", notes = "根据Company对象操作企业")
    @ApiImplicitParam(name = "company", value = "企业详细实体user", required = true, dataType = "Company")
    @ResponseBody
    @RequestMapping(value="/save",method=RequestMethod.POST)
    public Result save(Company company){
        return  companyService.save(company);   
    }
image.png

这里如果不加@ApiIgnore的话会把你指向的包里面的controller全部生成展示出来,这样swagger2就被完美的集成到你的项目中了。最后罗列下关于swagger的一些注解

@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API 
@ApiClass
@ApiError
@ApiErrors
@ApiParamImplicit
@ApiParamsImplicit
上一篇下一篇

猜你喜欢

热点阅读