JAVA-Actual-Combat-2

Java实战 (Swagger配置) 2

简介

在前后端分离的情况下,需要一个良好的接口文档,使前后端不需要太多的沟通就能按照接口文档进行工作的进行。而Swagger就是一个非常好的一个接口文档生成工具,他能够使后端开发人员不需要编写页面,只需要在对应的类上配置好注解就能够自动生成一个Swagger接口文档页面。

代码示例

1. 引入swagger依赖

<!--swagger-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
</dependency>

2. 添加swagger配置类

package com.sevattal.service.base.config;
import com.google.common.base.Predicates;
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.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;
/**
 * @author Sevattal
 **/
@Configuration
@EnableSwagger2
public class Swagger2Config {
    /*
    * Swagger 页面默认路径为:http://localhost:port/swagger-ui.html
    *
    * */
    /*
    * 前端API
    * */
    @Bean
    public Docket webApiConfig(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi")
                .apiInfo(webApiInfo())
                .select()
                .paths(Predicates.and(PathSelectors.regex("/api/.*")))
                .build();
    }
    /*
    * 后端API
    * */
    @Bean
    public Docket adminApiConfig(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("adminApi")
                .apiInfo(adminApiInfo())
                .select()
                .paths(Predicates.and(PathSelectors.regex("/admin/.*")))
                .build();
    }
    /*
    * 针对于网站前端的接口描述
    * */
    private ApiInfo webApiInfo(){
        return new ApiInfoBuilder().title("网站的api文档")
                .description("本文档描述了网站的api接口定义")
                .version("1.0")
                .contact(new Contact("Sevattal","https://sevattal.github.io","923762269@qq.com"))
                .build();
    }
    /*
     * 针对于网站管理端的接口描述
     * */
    private ApiInfo adminApiInfo(){
        return new ApiInfoBuilder().title("后台管理的api文档")
                .description("本文档描述了后台管理的api接口定义")
                .version("1.0")
                .contact(new Contact("Sevattal","https://sevattal.github.io","923762269@qq.com"))
                .build();
    }
}

2. Controller类使用 Swagger 注解参考

@Api: 注解使用在 Controller 类上,表明这个类的大致的作用
@ApiOperation(): 注解使用在 Controler 中的控制器方法上,表明该接口的作用
@ApiParam(value=””,required =true): 注解使用在 控制器方法的参数上,表明该参数的名称,该参数是否必传等。

import com.sevattal.common.base.result.R;
import com.sevattal.service.backuser.entity.BackuserRole;
import com.sevattal.service.backuser.service.BackuserRoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
 * <p>
 * 后台角色表 前端控制器
 * </p>
 *
 * @author Sevattal
 * @since 2021-04-20
 */
@Api(description = "角色管理")
@RestController
@RequestMapping("/admin/backuser/backuser-role")
@Slf4j
public class BackuserRoleController {
    @Autowired
    private BackuserRoleService backuserRoleService;
    @ApiOperation("创建角色")
    @PostMapping("createrole")
    public R createRole(@ApiParam(value = "角色名称", required = true) @RequestBody BackuserRole backuserRole){
        boolean result = backuserRoleService.createRole(backuserRole);
        if (result){
            return R.ok().message("角色创建成功");
        }else {
            return R.error().message("角色创建失败");
        }
    }
}

3. Entity 实体类 使用 Swagger 注解参考

@ApiModel: 注解使用在实体类上,表明该实体类的名称,以及其详细信息
@ApiModelProperty(value = “”): 注解使用在实体类的成员上,表明该成员的名称

package com.sevattal.service.backuser.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.sevattal.service.base.model.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 * 后台角色表
 * </p>
 *
 * @author Sevattal
 * @since 2021-04-20
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="BackuserRole对象", description="后台角色表")
public class BackuserRole extends BaseEntity {
    private static final long serialVersionUID=1L;
    @ApiModelProperty(value = "角色名称")
    private String name;
    @ApiModelProperty(value = "排序")
    private Integer sort;
}
Contents
  1. 1. Java实战 (Swagger配置) 2
    1. 1.1. 简介
    2. 1.2. 代码示例
      1. 1.2.1. 1. 引入swagger依赖
      2. 1.2.2. 2. 添加swagger配置类
      3. 1.2.3. 2. Controller类使用 Swagger 注解参考
      4. 1.2.4. 3. Entity 实体类 使用 Swagger 注解参考
|