Blazor WebAssembly怎么调用API Blazor Wasm发起HTTP请求方法

星降
发布: 2025-12-21 09:02:30
原创
808人浏览过
Blazor WebAssembly 调用 API 推荐使用注入的 IHttpClientFactory 和命名 HttpClient,支持配置、拦截与生命周期管理;需配置 CORS、手动处理 Token 认证、错误响应及加载状态。

blazor webassembly怎么调用api blazor wasm发起http请求方法

Blazor WebAssembly 调用 API 主要靠 IHttpClientFactoryHttpClient,推荐用注入的客户端发请求,安全、可配置、支持拦截和生命周期管理。

使用 HttpClient 服务发起 GET 请求

Program.cs 中已默认注册了命名客户端(如 "ServerAPI"),你只需在组件中注入并调用:

  • 确保 Program.cs 里有类似 builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); 或更推荐的命名注册:builder.Services.AddHttpClient("ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress));
  • 组件中用 @inject IHttpClientFactory HttpClientFactory,然后 var client = HttpClientFactory.CreateClient("ServerAPI");
  • 调用 await client.GetFromJsonAsync<t>("api/values")</t>,自动反序列化,简洁安全

POST 请求传参与处理响应

提交数据常用 PostAsJsonAsync后端接收需匹配模型结构:

  • 定义请求体类,比如 public class LoginRequest { public string Username { get; set; } }
  • 组件中: var response = await client.PostAsJsonAsync("api/auth/login", new LoginRequest { Username = "user" });
  • 检查 response.IsSuccessStatusCode,再用 await response.Content.ReadFromJsonAsync<loginresult>()</loginresult> 解析结果
  • 注意:WASM 运行在浏览器沙箱中,跨域需后端配 CORS,且不能绕过同源策略

错误处理与加载状态控制

真实场景中网络可能失败或延迟,别让 UI 卡住或静默出错:

萝卜简历
萝卜简历

免费在线AI简历制作工具,帮助求职者轻松完成简历制作。

萝卜简历 171
查看详情 萝卜简历
  • try/catch 捕获 HttpRequestException,区分连接失败、404、500 等
  • 配合 @if (isLoading) { <text>Loading...</text> } 显示加载态
  • 对 401 响应可跳转登录页:if (response.StatusCode == HttpStatusCode.Unauthorized) Navigation.NavigateTo("/login");
  • 避免在 OnInitializedAsync 中直接 await 长耗时请求,建议用 Task.Run 包裹或配合 StateHasChanged() 手动刷新

自定义请求头与认证 Token

带身份凭证调用受保护接口很常见:

  • 从本地存储读取 token:var token = await localStorage.GetItemAsStringAsync("auth_token");(需引用 Microsoft.AspNetCore.Components.Web.Extensions 或用 JS Interop)
  • 设置头:client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
  • 更优雅的做法是用 DelegatingHandler 封装自动加 token 逻辑,注册时链入:AddHttpClient(...).AddHttpMessageHandler<authhandler>();</authhandler>
  • 注意:WASM 无法访问 Cookie(浏览器限制),Token 必须显式传,通常存在 localStorage 或 sessionStorage

基本上就这些。核心是用好 IHttpClientFactory + 异步方法 + 合理错误处理,不复杂但容易忽略加载态和跨域细节。

以上就是Blazor WebAssembly怎么调用API Blazor Wasm发起HTTP请求方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号