You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swagger中自定义超出short类型最大值的错误提示信息?

自定义Swagger中值超出范围的错误提示信息

方法一:使用数据注解直接指定提示

给参数添加[Range]注解,自定义错误提示信息,这样既会在模型验证阶段返回自定义提示,Swagger也会自动识别范围限制并展示:

public async Task<IActionResult> MyMethod(
    [Range(short.MinValue, short.MaxValue, ErrorMessage = "你输入的值 {0} 超出了允许范围,有效值必须在 {1} 到 {2} 之间")] 
    short someValue
)

注解里的{0}会替换为传入的无效值,{1}和{2}分别替换为short类型的最小值(-32768)和最大值(32767)。

方法二:全局配置处理类型转换错误

如果要统一处理所有类似的类型溢出错误(比如short、int等类型的范围超出问题),可以通过配置ApiBehaviorOptions来覆盖默认的错误响应:

在Program.cs(.NET 6+)或者Startup.cs的ConfigureServices方法中添加以下代码:

builder.Services.Configure<ApiBehaviorOptions>(options =>
{
    options.InvalidModelStateResponseFactory = context =>
    {
        var errorMessages = context.ModelState
            .Where(entry => entry.Value.Errors.Any())
            .SelectMany(entry => entry.Value.Errors)
            .Select(error => 
            {
                // 判断是否是类型溢出导致的错误
                if (error.Exception is OverflowException)
                {
                    return "输入的值超出了允许的范围,请输入-32768到32767之间的整数";
                }
                // 其他错误保留原提示
                return string.IsNullOrWhiteSpace(error.ErrorMessage) 
                    ? error.Exception?.Message 
                    : error.ErrorMessage;
            });

        return new BadRequestObjectResult(new { 错误信息 = errorMessages });
    };
});

这种方式会全局拦截模型绑定阶段的错误,当传入的值超出short类型范围时,就会返回你自定义的提示内容。

内容的提问来源于stack exchange,提问作者TryMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:47:11