SpringBoot入门-集成Swagger,统一返回值

集成swagger

swagger名气很大,用来生成接口 文档的,相信大家都知道。不过swagger界面不够美观,使用起来不太方便,我这次安利的是一款国人开发的基于swagger二次开发的库-knife4j,用过的都说好!

第一步,引入依赖

      <!-- swagger -->
      <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-spring-boot-starter</artifactId>
        <version>${knife4j.version}</version>
      </dependency>

第二步,写配置类,其中basePackage里面的包名要改成你自己controller的包名,swagger会在这个包名扫描注解生成文档

@Configuration
@EnableSwagger2WebMvc
public class SwaggerConfig {
    @Bean
    public Docket adminApi() {
        List<ResponseMessage> responseMessageList = new ArrayList();
        responseMessageList.add((new ResponseMessageBuilder()).code(200).message("请求成功").build());
        return new Docket(DocumentationType.SWAGGER_2)
                .directModelSubstitute(LocalDateTime.class, Date.class)
                .directModelSubstitute(LocalDate.class, Date.class)
                .directModelSubstitute(LocalTime.class, Date.class)
                .groupName("后台接口")
                .globalResponseMessage(RequestMethod.GET, responseMessageList)
                .globalResponseMessage(RequestMethod.POST, responseMessageList)
                .globalResponseMessage(RequestMethod.PUT, responseMessageList)
                .globalResponseMessage(RequestMethod.DELETE, responseMessageList)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.wkt.controller"))
                .build()
                .securitySchemes(securitySchemes())
                .securityContexts(securityContexts());
    }

第三步,打开浏览器,输入服务器地址/doc.html能正常打开说明成功了

 集成统一返回值

对于接口返回的格式,应该统一,这样对于前端对接会便利许多

首先定义一个返回类,其中@ApiModelProperty是swagger注解,用在bean或者实体类的属性上,这样返回的接口文档中就能看到属性的说明了

@Data
@Accessors(chain = true)
public class Result<T> {
    public final static int FAIL = 0;
    public final static int OK = 200;
    public final static int BAD_REQUEST = 400;
    public final static int UNAUTHORIZED = 401;
    public final static int FORBIDDEN = 403;

    @ApiModelProperty(value = "状态码,200表示成功, 401表示未登录, 403表示无权限", position = 0)
    private int status;
    @ApiModelProperty(value = "成功或错误消息", position = 1)
    private String message;
    @ApiModelProperty(value = "返回数据", position = 2)
    private T data;

    @Override
    public String toString() {
        return "Result{" +
                "status=" + status +
                ", message='" + message + '\'' +
                '}';
    }
}

定义一个BaseController,所有controller继承这个BaseController

public class BaseController {
    public Result resultOk() {
        return ResultUtils.resultOk();
    }

    public <T extends Result> T resultOk(Object data) {
        return ResultUtils.resultOk(data);
    }

    public <T extends Result> T resultOk(Object data, String msg) {
        return ResultUtils.resultOk(data, msg);
    }

    public Result resultFail() {
        return ResultUtils.resultFail();
    }

    public Result resultFail(String msg) {
        return ResultUtils.resultFail(msg);
    }

    public Result resultFail(int code, String msg) {
        return ResultUtils.resultFail(code, msg);
    }
}

编写一个测试controller试试,其实@Api注解用来指定swagger文档的分组名,@ApiOperation指定接口说明

@RestController
@RequestMapping("/user")
@Api(tags = "用户管理")
public class UserController extends BaseController {
    @ApiOperation(value = "用户详情")
    @GetMapping("{id}")
    public Result<User> detail(@PathVariable int id) {
        User user = new User();
        user.setRealName("wali");
        user.setPassword("123");
        return resultOk(user);
    }
}

调试下试试,可以看到knife4j会在返回的字段后面映射上说明,对前端的小伙伴相当友好,同时我们看到左边有个Authorize菜单可以配置token,这样就不用每次填写了,相当方便

 参考项目: https://gitee.com/huatin/java-test

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值