Blazor 的 Web api 基本 URL 的全局变量
Posted
技术标签:
【中文标题】Blazor 的 Web api 基本 URL 的全局变量【英文标题】:Global variable for web api base URL for Blazor 【发布时间】:2020-07-09 10:06:04 【问题描述】:目前,我有这个正在工作的 Blazor(服务器项目),它只有一个按钮,可以发出 Web Api GET 请求,它可以正常工作。
这是我的ConfigureServices
方法
public void ConfigureServices(IServiceCollection services)
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddSingleton<HttpClient>();
在我的Index.razor
@page "/"
@inject HttpClient http;
@using Models
<button @onclick="@GetMovies">Get Movies</button>
<table>
<thead>
<tr><th>Movie</th></tr>
</thead>
<tbody>
@foreach(var movie in @Movies)
<tr><td>@movie.MovieTitle</td></tr>
</tbody>
</table>
@code
List<Movie> Movies;
private async Task GetMovies()
Movies = await http.GetJsonAsync<List<Movie>>("http://localhost:54124/api/Movies");
如何将http://localhost:54124
像全局变量一样放入一个位置?在ConfigureServices
方法上做吗?
【问题讨论】:
【参考方案1】:你应该把它存储在appsettings.json
。
如果您使用的是 WASM,appsettings.json
将在 wwwroot
中。
要从中获取价值,您可以查看this question 的答案,我根据 .net 核心的版本进行了更改,并且有不止一种方法可以做到这一点。
【讨论】:
【参考方案2】:1- 创建一个类
public class GlobalVariable
public static string Test get; set; = "any thing";
2- 将其作为单例
Services.AddSingleton<GlobalVariable>();
在客户端把它放在programm.cs文件中 在服务器端把它放在startup.cs文件中
现在你可以在任何地方使用它了
GlobalVariable.Test
我的参考:https://github.com/dodyg
【讨论】:
与依赖注入结合使用时不应使用静态参数。您应该使用非静态变量,然后注入 GlobalVariable 的实例(使用注入机制)以获取您在 AddSingleton 行中声明的实例以上是关于Blazor 的 Web api 基本 URL 的全局变量的主要内容,如果未能解决你的问题,请参考以下文章
Blazor Web Api 返回 text/html 而不是 application/json