【发布时间】:2022-01-24 03:41:37
【问题描述】:
有多个关于如何使用 Blazor 调用 API 的示例,例如
var request = new HttpRequestMessage(HttpMethod.Get, "https://api.github.com/repos/dotnet/AspNetCore.Docs/branches");
request.Headers.Add("Accept", "application/vnd.github.v3+json");
request.Headers.Add("User-Agent", "HttpClientFactory-Sample");
var client = ClientFactory.CreateClient();
var response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
{
using var responseStream = await response.Content.ReadAsStreamAsync();
branches = await JsonSerializer.DeserializeAsync<IEnumerable<GitHubBranch>>(responseStream);
}
或
await this.httpClient.GetFromJsonAsync<TblMenus[]>("https://xxxxx.com/BLZ/api/GETData/x,x,x,x");
对我来说,这些似乎相当于使用
$.get( "ajax/test.html", function( data ) {
$( ".result" ).html( data );
alert( "Load was performed." );
});
这就是它的工作原理,但它与您以现代方式使用 API 的方式相去甚远。特别是如果您要构建的不仅仅是 hello world 脚本。
如果您查看任何 TS/JS 框架(Angular、React、Vue),您会发布某种 API 规范(OpenAPI/Swagger),然后从中生成强类型的客户端代码(使用 typescript 或任何您喜欢的方式) .每次更新 API 时都没有强制转换或检查所有代码,因为它只是封装在客户端类中,并在您更新生成的客户端时更新。
所以我的问题是这样的。 存在哪些选项,或者是否有任何示例说明如何使用 Blazor 而无需手动编写 API 调用或将它们嵌入 HTML 代码(几乎所有现代 JS/TS 框架工作都已远离)。
澄清一下,我不是在寻找意见,而是在寻找如何以更持久的方式在 Blazor 中封装、生成或使用 API 的示例,不会让 HTTP 调用遍布整个应用程序。
【问题讨论】:
-
如果您想要自动生成 C# 代码的东西,我发现 this。就个人而言,我发现这通常会导致必须编辑多个文件并且不会加快开发速度。不过我是一个人工作,而不是在一个组织中。