在 .NET Web API 中返回一致的错误

问题描述 投票:0回答:1

我有一个后端 .NET Core Web API 应用程序和前端的 React App。我希望能够从 API 返回错误并将其显示在应用程序中。我面临的问题是某些类以不同的方式返回错误。例如,我使用

System.ComponentModel.DataAnnotations
来验证表单字段。

using System.ComponentModel.DataAnnotations;

namespace SportAdvisorAPI.Models
{
    public class RegisterUserDto
    {
        [Required]
        public required string Name { get; set; }
        [Required]
        [EmailAddress]
        public required string Email { get; set; }
        [Required]
        public required string Password { get; set; }
        [Required]
        public required string ConfirmPassword { get; set; }

    }
}

因此,如果表单验证失败,我得到的 API 响应将如下所示:

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "00-3d6fda7d7ab4e861795de4091bae0e40-859fd543f9959150-00",
    "errors": {
        "Name": [
            "The Name field is required."
        ],
        "Email": [
            "The Email field is required.",
            "The Email field is not a valid e-mail address."
        ]
    }
}

我还使用

UserManager
类进行用户注册,如果失败,返回的 API 响应如下所示:

{
    "succeeded": false,
    "errors": [
        {
            "code": "PasswordTooShort",
            "description": "Passwords must be at least 6 characters."
        },
        {
            "code": "PasswordRequiresNonAlphanumeric",
            "description": "Passwords must have at least one non alphanumeric character."
        },
        {
            "code": "PasswordRequiresLower",
            "description": "Passwords must have at least one lowercase ('a'-'z')."
        },
        {
            "code": "PasswordRequiresUpper",
            "description": "Passwords must have at least one uppercase ('A'-'Z')."
        }
    ]
}

因此,如果我想在我的 React 应用程序中显示这些错误消息,我需要编写一个额外的逻辑来检查

errors
对象的外观并将其重新映射到可用的东西。理想情况下,我想要一个简单的字符串数组,无论我会遇到什么错误,都可以更简单地在应用程序中显示它。

我在 .NET API 端有一种方法可以全局配置这些错误响应的样子?也许有一种我不知道的更好的方法?

到目前为止,我尝试返回错误,并在尝试更改任何配置之前检查它们的外观

reactjs asp.net .net asp.net-web-api asp.net-core-webapi
1个回答
0
投票

我已经在我的 YouTube 视频中解释了如何在全局范围内处理有关使用 React 和 .NET 8 Web API 创建 CRUD 的错误,您可以看看它是否适合您。实现的方法是配置一个机制来捕获所有错误,将它们处理为一定的格式,然后返回给调用者:

https://www.youtube.com/watch?v=g3is3wQK70Q

© www.soinside.com 2019 - 2024. All rights reserved.