Swagger-UI 自定义显示返回状态码

本文介绍如何在Swagger中自定义接口返回状态码,包括单接口设置及全局配置方法,通过枚举类实现状态码的灵活管理和维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Swagger-UI 自定义显示返回状态码

注: Swagger-bootstrap-ui 方法同样

Swagger,作为一个在线文档,是非常好用的,正确的使用这个,可以使我们少些很多接口文档。

1.问题背景:

做为接口文档,那必然是要有,全局错误状态码说明的功能。
而Swagger在参数,相应,都用相应的注解,同样,在状态码也是有相应的注解的。
默认的状态码,只有200,如下:

在这里插入图片描述

2.单接口设置返回状态码

@PostMapping("/login")
    @ApiOperation(value = "登录", notes = "")
    @ApiOperationSupport(order = 1)
    @ApiResponses({
            @ApiResponse(code = 1000, message = "非HTTP状态码,返回值JSON code字段值,描述:成功"),
            @ApiResponse(code = 401, message = "非HTTP状态码,返回值JSON code字段值,描述:无token")
    })
    public R<LoginRes> login(@RequestBody @Validated LoginReq req) {
        ......
        return R.ok(login);
    }

添加后,如下

虽然达到了目的,但是,这样一个一个方法的添加,显然是不够方便的,所以,看下面全局添加状态码。
这种方法可以适用于单个接口添加特定状态码说明。

在这里插入图片描述

3.全局设置状态码

打开Swagger配置类,找到初始化Docket的地方。添加如下代码
@Bean
    public Docket api(SwaggerProperties swaggerProperties) {
        .....................
        其他配置这里不过多展示
		.....................
        //添加全局响应状态码
        List<ResponseMessage> responseMessageList = new ArrayList<>();
        Arrays.stream(ErrorEnums.values()).forEach(errorEnums -> {
            responseMessageList.add(
                    new ResponseMessageBuilder().code(errorEnums.getCode()).message(errorEnums.getMsg()).responseModel(
                            new ModelRef(errorEnums.getMsg())).build()
            );
        });
        //noinspection Guava
        return new Docket(DocumentationType.SWAGGER_2)
                // 添加全局响应状态码
                .globalResponseMessage(RequestMethod.GET, responseMessageList)
                .globalResponseMessage(RequestMethod.POST, responseMessageList)
                .globalResponseMessage(RequestMethod.PUT, responseMessageList)
                .globalResponseMessage(RequestMethod.DELETE, responseMessageList)
        ......................
        其他配置这里不过多展示
		......................
                .host(swaggerProperties.getHost())
                .apiInfo(apiInfo(swaggerProperties)).select()
                .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()))
                .paths(Predicates.and(Predicates.not(Predicates.or(excludePath)), Predicates.or(basePath)))
                .build()
                .securitySchemes(securitySchemas())
                .securityContexts(Collections.singletonList(securityContext()))
                .pathMapping("/");
    }

ErrorEnums.java说明

因为,我们的状态码可能经常变动,所以,在这里,我并没有直接把值写死,这样不利于后期维护,所以,选用了枚举类,里面有状态码和说明,可自行更换。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值