日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
BlazorWebAssembly應(yīng)用程序中進行HTTP請求

翻譯自 Waqas Anwar 2021年5月13日的文章 《Making HTTP Requests in Blazor WebAssembly Apps》 [1]

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出婺源免費做網(wǎng)站回饋大家。

在我的前篇文章《Blazor Server 應(yīng)用程序中進行 HTTP 請求》中,我介紹了在 Blazor Server 應(yīng)用程序中進行 HTTP 請求的相關(guān)技術(shù),在 Blazor Server App 中您可以訪問所有的 .NET 類庫和組件。但如果您創(chuàng)建的是 Blazor WebAssembly 應(yīng)用程序,那么您的代碼將在客戶端的瀏覽器沙箱中運行,您的選擇在某種程度上會受到限制。在本教程中,我將向您展示如何在 Blazor WebAssembly 應(yīng)用程序進行 HTTP 請求。

Blazor WebAssembly 應(yīng)用程序中的 HttpClient 概述

Blazor WebAssembly 應(yīng)用程序使用預(yù)置的 HttpClient 服務(wù)調(diào)用 Web API。這個預(yù)置的 HttpClient 是使用瀏覽器的 Fetch API[2] 實現(xiàn)的,會有一些限制。HttpClient 還可以使用 Blazor JSON 幫助程序或 HttpRequestMessage 對象進行 API 調(diào)用。默認(rèn)情況下,您只能向同源服務(wù)器發(fā)送 API 調(diào)用請求,不過如果第三方 API 支持跨域資源共享(CORS)的話,您也可以調(diào)用其他服務(wù)器上的 API。

命名空間 System.Net.Http.Json 為使用 System.Text.Json 執(zhí)行自動序列化和反序列化的 HttpClient 提供了擴展方法。這些擴展方法將請求發(fā)送到一個 Web API URI 并處理相應(yīng)的響應(yīng)。常用的方法有:

  • GetFromJsonAsync:發(fā)送 HTTP GET 請求,并將 JSON 響應(yīng)正文解析成一個對象。
  • PostAsJsonAsync:將 POST 請求發(fā)送到指定的 URI,并在請求正文中載有序列化為 JSON 的 value。
  • PutAsJsonAsync:發(fā)送 HTTP PUT 請求,其中包含 JSON 編碼的內(nèi)容。

要理解如何將這些方法與 HttpClient 一起使用,我們需要創(chuàng)建兩個項目。第一個項目是一個 Web API 項目,它向客戶端公開一個 Web API。第二個項目是 Blazor WebAssembly 應(yīng)用程序,它向第一個項目中創(chuàng)建的 Web API 發(fā)送 HTTP 請求。

實現(xiàn)一個 ASP.NET Core Web API

在本節(jié)中,我們將實現(xiàn)一個支持跨域資源共享 (CORS) 的 Web API,以便 Blazor WebAssembly 應(yīng)用程序可以調(diào)用此 API。在 Visual Studio 2019 中創(chuàng)建一個新的 Web API 項目 BlazorClientWebAPI。我們將創(chuàng)建一個簡單的 API 來返回產(chǎn)品列表,所以首先要在項目中創(chuàng)建一個 Models 文件夾,并在其中添加如下的 Product 類。

Product.cs

 
 
 
 
  1. public class Product 
  2.     public int Id { get; set; } 
  3.     public string Name { get; set; } 
  4.     public decimal Price { get; set; } 

接下來,創(chuàng)建一個 Controllers 文件夾并在其中添加下面的 ProductsController。該控制器簡單地從 GetProducts 方法返回一些模擬的產(chǎn)品數(shù)據(jù)。

ProductsController.cs

 
 
 
 
  1. [Route("api/[controller]")] 
  2. [ApiController] 
  3. public class ProductsController : ControllerBase 
  4.     [HttpGet] 
  5.     public IActionResult GetProducts() 
  6.     { 
  7.         var products = new List() 
  8.         { 
  9.             new Product() 
  10.             { 
  11.                 Id = 1, 
  12.                 Name = "Wireless Mouse", 
  13.                 Price = 29.99m 
  14.             }, 
  15.             new Product() 
  16.             { 
  17.                 Id = 2, 
  18.                 Name = "HP Headphone", 
  19.                 Price = 79.99m 
  20.             }, 
  21.             new Product() 
  22.             { 
  23.                 Id = 3, 
  24.                 Name = "Sony Keyboard", 
  25.                 Price = 119.99m 
  26.             } 
  27.         }; 
  28.   
  29.         return Ok(products); 
  30.     } 

現(xiàn)在如果您運行該項目,并嘗試在瀏覽器中使用 URI api/products 訪問該 API,您應(yīng)該能看到以 JSON 格式返回的產(chǎn)品數(shù)據(jù)。

在 ASP.NET Core Web API 中啟用 CORS

默認(rèn)情況下,瀏覽器安全性不允許一個網(wǎng)頁向除提供該網(wǎng)頁的域之外的其他域發(fā)送請求。這種約束稱之為同源策略。如果我們希望 Blazor WebAssembly 應(yīng)用程序或其他客戶端應(yīng)用程序使用上述 Web API,那么我們必須啟用跨域資源共享 (CORS)。打開 Startup.cs 文件,并在 ConfigureServices 方法中調(diào)用 AddCors 方法。

 
 
 
 
  1. public void ConfigureServices(IServiceCollection services) 
  2.     services.AddCors(policy => 
  3.     { 
  4.         policy.AddPolicy("CorsPolicy", opt => opt 
  5.             .AllowAnyOrigin() 
  6.             .AllowAnyHeader() 
  7.             .AllowAnyMethod()); 
  8.     }); 
  9.   
  10.     services.AddControllers(); 

同時,在 Startup.cs 文件的 Configure 方法中添加以下代碼行。

 
 
 
 
  1. app.UseCors("CorsPolicy"); 

有關(guān)使用 ASP.NET Core 應(yīng)用程序的 CORS 的詳細(xì)信息,請參閱 《Enable Cross-Origin Requests (CORS) in ASP.NET Core》[3]。

實現(xiàn) Blazor WebAssembly 應(yīng)用程序

在創(chuàng)建上述 Web API 項目的同一解決方案中添加一個新的 Blazor WebAssembly 應(yīng)用程序項目 BlazorClientWebAPIsDemo。

我們需要確保的第一件事是,在項目文件中有 System.Net.Http.Json 的引用。如果沒有,那么您可以添加該引用。

 
 
 
 
  1.  
  2.     
  3.       net5.0 
  4.     
  5.     
  6.        
  7.        
  8.        
  9.     
  10.  

接下來,我們需要在 Program.cs 文件中配置 HttpClient 服務(wù)。確保提供了要從 Blazor WebAssembly 應(yīng)用程序調(diào)用的 Web API 的基地址。

Program.cs

 
 
 
 
  1. public static async Task Main(string[] args) 
  2.     var builder = WebAssemblyHostBuilder.CreateDefault(args); 
  3.     builder.RootComponents.Add("#app"); 
  4.   
  5.     builder.Services.AddScoped(sp => new HttpClient 
  6.     { 
  7.         BaseAddress = new Uri("http://localhost:5000/api/") 
  8.     });  
  9.   
  10.     await builder.Build().RunAsync(); 

為了使用產(chǎn)品 API,我們在 Pages 文件夾中創(chuàng)建一個 Products.razor 組件。該視圖非常簡單,因為它只是迭代產(chǎn)品列表并使用簡單的 HTML 表格來顯示它們。

Products.razor

 
 
 
 
  1. @page "/products" 
  2.   
  3. Products

     
  4.   
  5. @if (products == null) 
  6.     

    Loading...

     
  7. else 
  8.      
  9.          
  10.              
  11.                 Id 
  12.                 Name 
  13.                 Price 
  14.              
  15.          
  16.          
  17.             @foreach (var forecast in products) 
  18.             { 
  19.                  
  20.                     @forecast.Id 
  21.                     @forecast.Name 
  22.                     @forecast.Price 
  23.                  
  24.             } 
  25.          
  26.      

創(chuàng)建一個代碼隱藏文件 Products.razor.cs,并將配置的 HttpClient 實例作為私有成員注入到該類中。最后,使用 GetFromJsonAsync 方法調(diào)用產(chǎn)品 API。

Products.razor.cs

 
 
 
 
  1. public partial class Products 
  2.     private List products; 
  3.   
  4.     [Inject] 
  5.     private HttpClient Http { get; set; } 
  6.   
  7.     protected override async Task OnInitializedAsync() 
  8.     { 
  9.         products = await Http.GetFromJsonAsync>("products"); 
  10.     }  

您還需要在 Blazor WebAssembly 項目中創(chuàng)建一個 Product 類的本地副本,以將產(chǎn)品 API 的結(jié)果反序列化為產(chǎn)品對象列表。

 
 
 
 
  1. public class Product 
  2.     public int Id { get; set; } 
  3.     public string Name { get; set; } 
  4.     public decimal Price { get; set; } 

運行該項目,您將看到從后端 Web API 加載了產(chǎn)品的頁面。


名稱欄目:BlazorWebAssembly應(yīng)用程序中進行HTTP請求
瀏覽路徑:http://www.5511xx.com/article/cocodsd.html