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 服务器 api 返回文本/html

如何更改 blazor wasm 应用程序的基本 URL

Blazor 从 URL 下载 Azure Blob

Blazor Web Api 返回 text/html 而不是 application/json

.NET 6 Web API 和 Blazor 服务器应用程序之间的回调侦听器

使用 IIS URL 重写动态设置 Blazor WASM 基本 href