修改Swagger接口文档网络请求返回状态码

首先,我们查看Docket的源码,可以看到有一个控制返回码的字段属性

image-20220202161613609

以及对应的方法

image-20220202161726224

可见,我们要创建一个新的Docket实例,并在其中修改返回码配置

参考globalResponses方法,我们需要准备好两个参数,HttpMethodResponseList

查看HttpMethod源码,易得即是一个常用请求方法的枚举类:

image-20220202162130948

查看Response的源码,我们仅需要准备好codedescription即可

因此,我在model包中定义一个ResultCode的枚举类,并作简单的封装

image-20220202151049609

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中,通过流操作,封装好自定义的返回状态码到ResponseList列表中,并将其封装到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);
}

查看效果:

image-20220202162735435