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

如何在WebAssembly中处理ASP.NET Core API的ActionResult状态码?

处理ASP.NET Core API的ActionResult响应

代码实现:如何处理不同状态码

你当前用的GetFromJsonAsync是封装后的快捷方法,它在遇到非2xx状态码时会直接抛出HttpRequestException,没法直接获取响应状态码。要处理OK、NotFound这类不同的ActionResult,得先发送请求拿到完整的HttpResponseMessage,再按状态码分支处理:

private async Task RetrieveData()
{
    try
    {
        var response = await Client.GetAsync("api/Drivers/2");
        
        // 处理成功响应(2xx状态码)
        if (response.IsSuccessStatusCode)
        {
            var dataTemp = await response.Content.ReadFromJsonAsync<Drivers>();
            text = dataTemp?.name ?? "无司机名称";
        }
        // 处理NotFound(404)
        else if (response.StatusCode == HttpStatusCode.NotFound)
        {
            text = "请求的司机不存在";
        }
        // 处理其他错误状态码
        else
        {
            text = $"请求失败,状态码:{(int)response.StatusCode}";
        }
    }
    catch (HttpRequestException ex)
    {
        // 处理网络异常、请求超时等情况
        text = $"网络请求出错:{ex.Message}";
    }
}

关于你的疑问解答

  • 是否可以通过代码处理OK、NotFound这类ActionResult?
    完全可以,这是前端与API交互的标准操作。

  • 这是设计初衷还是不良实践?
    这绝对是RESTful API的设计初衷。HTTP状态码是语义化的通信约定:200 OK表示资源获取成功,404 NotFound表示请求的资源不存在,这些状态码就是用来让客户端区分不同请求结果,进而做出对应业务处理的,属于最佳实践。

  • ActionResult的用途是否仅为让开发者查看状态?
    当然不是。ActionResult(对应HTTP状态码)是服务端向客户端传递请求结果语义的核心方式:

    • 生产环境中,客户端可根据状态码自动处理逻辑(比如401跳转登录页、403提示无权限、404显示资源不存在页面);
    • 开发者查看状态码只是调试阶段的用途,并非其核心价值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:18:13