语法速学,返回数组 repeated修饰符
生活随笔
收集整理的這篇文章主要介紹了
语法速学,返回数组 repeated修饰符
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
重新編寫proto文件
syntax = "proto3";
package services;
import "google/api/annotations.proto";
message ProdRequest {
int32 prod_id = 1; //傳入id
}
message ProdResponse {
int32 prod_stock = 1; //商品庫存
}
message QuerySize {
int32 size = 1; //頁尺寸,這里的1并不是默認(rèn)值,而是字段的順序,如果有其他參數(shù)就就寫2
}
message ProdResponseList {
repeated ProdResponse prodres = 1; //返回了一堆商品庫存,使用了repeated修飾符,還是用了結(jié)構(gòu)體的引用,引用了ProdResponse結(jié)構(gòu)體
}
service ProdService {
rpc GetProdStock (ProdRequest) returns (ProdResponse) {
option (google.api.http) = {
get: "/v1/prod/{prod_id}" //和request中的prod_id對(duì)應(yīng),不能寫錯(cuò)
};
}
rpc GetProdStocks (QuerySize) returns (ProdResponseList);
}
protoc --grpc-gateway_out=logtostderr=true:../services Prod.proto重新生成代碼
新定義的GetProdStocks返回值是這樣的
因?yàn)槌薖rodres字段其他的字段json都不解析,我只要構(gòu)造一個(gè)Prodres字段就可以了,這里是一個(gè)數(shù)組
客戶端調(diào)用代碼
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
"grpccli/helper"
"grpccli/services"
"log"
)
func main() {
//creds, err := credentials.NewClientTLSFromFile("keys/server.crt", "localhost")
//if err != nil {
// log.Fatal(err)+
//}
creds := helper.GetClientCreds()
conn, err := grpc.Dial(":8081", grpc.WithTransportCredentials(creds))
if err != nil {
log.Fatal(err)
}
defer conn.Close()
prodClient := services.NewProdServiceClient(conn)
/*
proto文件內(nèi)容
message QuerySize {
int32 size = 1; //頁尺寸,這里的1并不是默認(rèn)值,而是字段的順序,如果有其他參數(shù)就就寫2
}
message ProdResponseList {
repeated ProdResponse prodres = 1; //返回了一堆商品庫存,使用了repeated修飾符
}
service ProdService {
rpc GetProdStock (ProdRequest) returns (ProdResponse) {
option (google.api.http) = {
get: "/v1/prod/{prod_id}" //和request中的prod_id對(duì)應(yīng),不能寫錯(cuò)
};
}
rpc GetProdStocks (QuerySize) returns (ProdResponseList); //定義了參數(shù)是QuerySize
}
*/
response, err := prodClient.GetProdStocks(context.Background(), &services.QuerySize{Size: 10}) //這里傳入的QuerySize是在proto中定義好的參數(shù)
if err != nil {
log.Fatal(err)
}
fmt.Println(response.Prodres)
}
來自為知筆記(Wiz)
總結(jié)
以上是生活随笔為你收集整理的语法速学,返回数组 repeated修饰符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。