.Net Core WebApi 模型验证无效时报400

蔷薇花开 2021-01-25 ⋅ 17 阅读

在开发WebApi的过程中,经常需要对传入的数据进行验证,以确保数据的合法性和完整性。在.NET Core中,可以使用模型验证来实现这个目的。但是,当模型验证无效时,默认情况下,WebApi会返回一个HTTP 400错误。本文将介绍如何处理模型验证无效时的异常,并给出一些相关内容。

异常处理

当模型验证无效时,WebApi将自动返回HTTP 400错误。但是,我们可以自定义异常处理器,以便在发生验证失败时提供更丰富的内容和更友好的错误消息。

首先,我们需要在Startup.cs文件中配置全局异常处理器:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // 配置其他服务

        services.AddControllers()
            .ConfigureApiBehaviorOptions(options =>
            {
                // 添加自定义的异常处理器
                options.InvalidModelStateResponseFactory = context =>
                {
                    var errors = context.ModelState
                        .Where(e => e.Value.Errors.Count > 0)
                        .SelectMany(e => e.Value.Errors)
                        .Select(e => e.ErrorMessage)
                        .ToList();

                    var result = new
                    {
                        Message = "请求参数验证失败",
                        Errors = errors
                    };

                    return new BadRequestObjectResult(result);
                };
            });
    }

    // 省略其他代码
}

在上面的代码中,我们使用了InvalidModelStateResponseFactory回调函数来处理模型验证失败的情况。在这个回调函数中,我们可以获取到所有验证失败的错误消息,并将它们封装到一个自定义的响应对象中。然后,我们可以将该对象返回给客户端。

相关内容

下面是一些相关的内容,可以帮助你更全面地了解模型验证和异常处理:

希望本文能对你在开发.NET Core WebApi时处理模型验证无效时的异常有所帮助。如果你有任何疑问或建议,请随时在下面留言。感谢阅读!


全部评论: 0

    我有话说: