0

0

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

星降

星降

发布时间:2025-12-21 09:02:30

|

808人浏览过

|

来源于php中文网

原创

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("api/values"),自动反序列化,简洁安全

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() 解析结果
  • 注意:WASM 运行在浏览器沙箱中,跨域需后端配 CORS,且不能绕过同源策略

错误处理与加载状态控制

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

LangChain
LangChain

一个开源框架,用于构建基于大型语言模型(LLM)的应用程序。

下载
  • try/catch 捕获 HttpRequestException,区分连接失败、404、500 等
  • 配合 @if (isLoading) { Loading... } 显示加载态
  • 对 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();
  • 注意:WASM 无法访问 Cookie(浏览器限制),Token 必须显式传,通常存在 localStorage 或 sessionStorage

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

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

738

2023.08.22

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6416

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

409

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

88

2025.08.19

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6084

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

803

2023.09.14

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

0

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.3万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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