小编Rog*_*MKE的帖子

处理 Blazor WebAssembly 中的 API 验证错误

我正在学习 Blazor,并且我有一个 WebAssembly 客户端应用程序。

我在服务器上创建了一个 WebAPI,它在标准数据注释验证之外做了一些额外的验证。例如,当它尝试将记录写入数据库时​​,它会检查是否不存在具有相同电子邮件地址的其他记录。某些类型的验证不能在客户端可靠地发生,特别是在竞争条件可能产生不良结果的情况下。

API 控制器向客户端返回一个ValidationProblem结果,Postman 将结果的正文显示为:

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "|f06d4ffe-4aa836b5b3f4c9ae.",
    "errors": {
        "Email": [
            "The email address already exists."
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,验证错误位于 JSON 中的“errors”数组中。

回到 Blazor 客户端应用程序,我有一个典型的 HandleValidSubmit 函数,它将数据发布到 API 并接收响应,如下所示:

private async void HandleValidSubmit()
{
    var response = await Http.PostAsJsonAsync<TestModel>("api/Test", testModel);

    if (response.StatusCode != System.Net.HttpStatusCode.Created)
    {
        // How to handle server-side validation errors?
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何最好地处理服务器端验证错误?用户体验应该与任何其他验证错误相同,突出显示该字段,显示验证消息,以及页面顶部的摘要。

asp.net-core-webapi blazor

8
推荐指数
1
解决办法
2652
查看次数

标签 统计

asp.net-core-webapi ×1

blazor ×1