如何在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
相关产品推荐
相关产品推荐

