Blazor中创建和注入API Service的核心是定义接口与实现类封装HTTP调用,通过DI注册(WebAssembly用Singleton、Server用Scoped),并在OnInitializedAsync中异步调用;需注意HttpClient配置、CORS、生命周期匹配及错误处理。
在 Blazor 中创建和注入 API Service 的核心是:定义服务类封装 HTTP 调用,通过依赖注入(DI)注册到服务容器,并在组件中按需使用。关键在于区分服务生命周期、正确处理异步、适配 Blazor Server 与 WebAssembly 的差异。
新建一个 C# 类(如 WeatherForecastService.cs),继承 IWeatherForecastService 接口(推荐,利于测试和解耦)。内部使用 IHttpClientFactory 或直接注入 HttpClient(WebAssembly 下需注意配置)。
示例:
public interface IWeatherForecastService
{
TaskGetForecastAsync(DateTime startDate);
}
public class WeatherForecastService : IWeatherForecastService
{
private readonly HttpClient _httpClient;
public WeatherForecastService(HttpClient httpClient)
{
_httpClient = httpClient;
_httpClient.BaseAddress = new Uri("https://localhost:5001/"); // WebAssembly 需确保跨域或代理
}
public async TaskGetForecastAsync(DateTime startDate)
{
return await _httpClient.GetFromJsonAsync
($"WeatherForecast?startDate={startDate:O}");
}
}
Blazor 从 .NET 6 起统一使用 Program.cs 配置 DI 容器。根据部署模型选择注册方式:
示例(WebAssembly):
builder.Services.AddHttpClient(
client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress));
// 或手动注册(更灵活)
builder.Services.AddSingleton();
builder.Services.AddScoped(sp => new HttpClient
{
BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
});
使用 @inject 指令或构造函数注入。注意 Blazor 组件生命周期中,异步初始化需放在 OnInitializedAsync 中,避免在构造函数中执行异步操作。
示例(.razor 文件):
@page "/forecast"
@using MyApp.Services
@inject IWeatherForecastService ForecastServiceWeather Forecast
@if (forecasts == null)
{
Loading...
}
else
{
| Date | Temp. (C) | Summary |
|---|---|---|
| @forecast.Date.ToShortDateString() | @forecast.TemperatureC | @forecast.Summary |
实际开发中容易遇到以下情况:
proxy.conf.js 或 .NET 6+ 的 appsettings.Development.json 代理配置)AuthorizationMessageHandler)自动附加 JWT基本上就这些。不复杂但容易忽略细节,比如生命周期匹配、HttpClient 配置位置、以及 WebAssembly 下的 BaseAddress 来源。保持接口抽象、合理注册、异步生命周期对齐,API 调用就能稳定工作。
# js
# json
# app
# 后端
# ai
# proxy
# nas
# 跨域
# 常见问题
# c#
# .net
# 封装
# 构造函数
# Token
# 继承
# 接口
相关文章:
如何高效搭建专业期货交易平台网站?
如何高效利用200m空间完成建站?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
重庆市网站制作公司,重庆招聘网站哪个好?
建站主机功能解析:服务器选择与快速搭建指南
b2c电商网站制作流程,b2c水平综合的电商平台?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
再谈Python中的字符串与字符编码(推荐)
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何彻底卸载建站之星软件?
如何在万网自助建站中设置域名及备案?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
公众号网站制作网页,微信公众号怎么制作?
如何高效配置香港服务器实现快速建站?
山东云建站价格为何差异显著?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
如何挑选高效建站主机与优质域名?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
建站之星如何助力网站排名飙升?揭秘高效技巧
完全自定义免费建站平台:主题模板在线生成一站式服务
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
php json中文编码为null的解决办法
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何用AWS免费套餐快速搭建高效网站?
如何快速选择适合个人网站的云服务器配置?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
如何在IIS中新建站点并配置端口与物理路径?
公司网站制作价格怎么算,公司办个官网需要多少钱?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
如何在Tomcat中配置并部署网站项目?
中山网站制作网页,中山新生登记系统登记流程?
动图在线制作网站有哪些,滑动动图图集怎么做?
潮流网站制作头像软件下载,适合母子的网名有哪些?
北京网站制作网页,网站升级改版需要多久?
如何在Windows 2008云服务器安全搭建网站?
建站之星2.7模板快速切换与批量管理功能操作指南
如何通过WDCP绑定主域名及创建子域名站点?
制作表格网站有哪些,线上表格怎么弄?
如何通过IIS搭建网站并配置访问权限?
用v-html解决Vue.js渲染中html标签不被解析的问题
C#如何使用XPathNavigator高效查询XML
东莞专业制作网站的公司,东莞大学生网的网址是什么?
如何确保FTP站点访问权限与数据传输安全?
c# await 一个已经完成的Task会发生什么
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
北京专业网站制作设计师招聘,北京白云观官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。