首先,我们查看Docket
的源码,可以看到有一个控制返回码的字段属性
以及对应的方法
可见,我们要创建一个新的Docket
实例,并在其中修改返回码配置
参考globalResponses
方法,我们需要准备好两个参数,HttpMethod
和Response
的List
查看HttpMethod
源码,易得即是一个常用请求方法的枚举类:
查看Response
的源码,我们仅需要准备好code
、description
即可
因此,我在model
包中定义一个ResultCode
的枚举类,并作简单的封装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| package tech.maiquer.metrichall.model;
public enum ResultCode {
SUCCESS(200, "成功"), PARAM_IS_INVALID(1001, "参数无效"), PARAM_IS_BLANK(1002, "参数为空"), USER_NOT_LOGGED_IN(2001, "用户未登录"), USER_LOGIN_ERROR(2002, "用户不存在或密码错误"), USER_NOT_EXIST(2003, "用户不存在"), USER_HAS_EXISTED(2004, "用户已存在"), INSERT_FAIL(3001, "添加失败"), DELETE_FAIL(3002, "删除失败"), UPDATE_FAIL(3003, "更新失败"), QUERY_FAIL(3004, "查询为空");
private Integer code;
private String message;
public Integer getCode() { return code; }
public String getMessage() { return message; }
ResultCode(Integer code, String message) { this.code = code; this.message = message; }
}
|
在SwaggerConfig
中,通过流操作,封装好自定义的返回状态码到Response
的List
列表中,并将其封装到Docket
实例并返回
封装Response
并组装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @Bean public Docket docket() {
List<Response> responseList = new ArrayList<>(); Arrays.stream(ResultCode.values()).forEach(resultCode -> { responseList.add( new ResponseBuilder().code(resultCode.getCode().toString()).description(resultCode.getMessage()).build() ); });
return new Docket(DocumentationType.OAS_30) .globalResponses(GET, responseList) .globalResponses(POST, responseList) .globalResponses(PUT, responseList) .globalResponses(DELETE, responseList); }
|
查看效果: