最近有用微服務相關的專案,所以記錄一下。
服務端採用的是 NodeJS 程式碼就不貼了(主要是計算DY簽名的),這裡貼一下 .proto 檔案的程式碼
proto 檔案
syntax = "proto3";
package app.grpc; // 包名
// 定義通用的 Grpc 服務
service CommonService {
// 處理請求
rpc handle ( Request ) returns ( Response ) {}
}
// 定義通用的 Grpc 請求體
message Request {
int32 serialize = 1;
bytes request = 2;
}
// 定義通用的 Grpc 響應體
message Response {
bytes response = 1;
}
生成 PHP端的類庫檔案
需要依賴 proto 支援,不知道怎麼安裝的可以到這篇文章看看 https://www.jianshu.com/p/1d550bb8509d
執行以下命令
protoc --proto_path=./ --php_out=./ --grpc_out=./ --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin ./server/service.proto
我的 .proto 檔名稱是 service 放在 server 目錄下。
執行完命令之後,會在根目錄生成 App 和 GPBMetadata 資料夾。
在laravel中使用
1,複製 App目錄下的 Grpc 資料夾到你的 laravel 專案的 app 目錄下。
2,複製 GPBMetadata 資料夾到你的 laravel 專案根目錄
3,修改 composer.json 檔案的 classmap 欄位加上 GPBMetadata
...
"autoload": {
"classmap": [
"database/seeds",
"database/factories",
"GPBMetadata"
],
"psr-4": {
"App\\": "app/"
}
}
...
4,執行 composer dump-autoload 命令重新載入類庫
5,現在就可以在控制器裡面使用引入的類檔案了。use App\Grpc\YourClassName
在檔案頂部即可引入。
本作品採用《CC 協議》,轉載必須註明作者和本文連結