JWT(JSON Web Token)是一種用於在網路應用之間傳遞信息的開放標準(RFC 7519)。它使用 JSON 對象在安全可靠的方式下傳遞信息,通常用於身份驗證和信息交換。 在Web API中,JWT通常用於對用戶進行身份驗證和授權。當用戶登錄成功後,伺服器會生成一個Token並返回給客戶端 ...
gRPC入門學習之旅(一) gRPC入門學習之旅(二) gRPC入門學習之旅(三) gRPC入門學習之旅(四) gRPC入門學習之旅(五)
3.3、客戶端編譯生成GRPC類
1. 在“解決方案資源管理器”中,使用滑鼠左鍵選中項目名稱“Demo.Grpc.Cmd”,然後單擊滑鼠右鍵,在彈出的快捷菜單中選擇“重新生成”菜單項。
2. 在“解決方案資源管理器”中,使用滑鼠左鍵選中項目名稱“Demo.Grpc.Cmd,在彈出的快捷菜單中選擇“在文件資源管理器中打開文件夾”菜單項。如下圖。
3.我們打開“文件資源管理器”,進入到Demo.Grpc.Cmd\obj\Debug\
net7.0
目錄,發現此時目錄下也有與服務端一樣的4個.cs文件,就是GRPC協議文件對應的類文件,如下圖所示:
3.4、gRPC服務的https調用
1.在服務端項目(Demo.GrpcService)中,由Visual Studio 2022在創建項目時預設配置了兩個地址,讓我們來調用。2個地址分別為:http://localhost:5209
和https://localhost:7149
, gRPC客戶端會使用到這2個地址,目的是給客戶端請求請求地址,服務端將監聽這兩個埠。
2. 在Visual Studio 2022的“解決方案資源管理器”中,使用滑鼠右鍵單擊“Demo.Grpc.Cmd”項目名稱,在彈出菜單中選擇“添加--> 類”。 在“添加新項”對話框中將類命名為 User,然後選擇“添加”。
3. 在Visual Studio 2022的“解決方案資源管理器”中,使用滑鼠雙擊打開剛纔創建的User.cs文件,添加如下代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using Grpc.Net.Client;
using Demo.GrpcService.Protos;
namespace Demo.Grpc.Cmd
{
public class User
{
public void GetUserInfo()
{
// 使用https
const string urlHttps = "https://localhost:7149";
using (var channel = GrpcChannel.ForAddress(urlHttps))
{
var client = new UserInfo.UserInfoClient(channel);
UserInfoResult userInfo = client.GetUserInfo(new UserInfoRequest()
{
UserName = "Admin",
Password = "12345"
});
//列印服務方法返回的結果
Console.WriteLine($"{userInfo.UserName},{userInfo.Age},{userInfo.Name}");
Console.WriteLine( JsonSerializer.Serialize(userInfo));
}
// return string.Empty;
Console.ReadKey();
}
}
}
4. 在Visual Studio 2022的“解決方案資源管理器”中,使用滑鼠雙擊打開program.cs文件,添加如下代碼:
/ 、See https://aka.ms/new-console-template for more information
using Demo.Grpc.Cmd;
Console.WriteLine("Hello, World!");
new User().GetUserInfo();
5.我們在開啟一個Visual Studio 2022,打開“Demo.GrpcService”解決方案,將“Demo.GrpcService”設置為啟動項目,並使用https協議啟動運行。
6.啟動運行之後的結果如圖。
7.我們切換到“Demo.Grpc.Cmd”為啟動項目Visual Studio 2022,按F5,啟動。
8.啟動之後的運行結果,如圖。
到此,調用gRPC服務端提供的https地址就成功了。
3.5、gRPC服務的http調用
相比https的調用,我們只需要在調用前加上如下代碼即可:
|
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); |
1. 在Visual Studio 2022的“解決方案資源管理器”中,使用滑鼠雙擊打開User.cs文件,添加如下代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using Grpc.Net.Client;
using Demo.GrpcService.Protos;
namespace Demo.Grpc.Cmd
{
public class User
{
public void GetUserInfo()
{
//使用http
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
const string urlHttp = "http://localhost:5209";
using (var channel = GrpcChannel.ForAddress(urlHttp))
// 使用https
// const string urlHttps = "https://localhost:7149";
// using (var channel = GrpcChannel.ForAddress(urlHttps))
{
var client = new UserInfo.UserInfoClient(channel);
UserInfoResult userInfo = client.GetUserInfo(new UserInfoRequest()
{
UserName = "Admin",
Password = "12345"
});
//列印服務方法返回的結果
Console.WriteLine($"{userInfo.UserName},{userInfo.Age},{userInfo.Name}");
Console.WriteLine( JsonSerializer.Serialize(userInfo));
}
// return string.Empty;
Console.ReadKey();
}
}
}
2.在目Visual Studio 2022,按F5或是點擊工具欄上的“運行”按鈕,啟動“Demo.Grpc.Cmd”控制台程式。
到此,調用gRPC服務端提供的http地址就成功了。
運行效果如下: