首先,我们查看Docket
的源码,可以看到有一个控制返回码的字段属性
以及对应的方法
可见,我们要创建一个新的Docket
实例,并在其中修改返回码配置
参考globalResponses
方法,我们需要准备好两个参数,HttpMethod
和Response
的List
查看HttpMethod
源码,易得即是一个常用请求方法的枚举类:
查看Response
的源码,我们仅需要准备好code
、description
即可
因此,我在model
包中定义一个ResultCode
的枚举类,并作简单的封装
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
并组装
@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);
}
查看效果: