GetFunction gRPC Method
参数
package_id
字符串
必填
正在加载...
模块名称
字符串
必填
正在加载...
名称
字符串
必填
正在加载...
退货
function
对象
正在加载...
名称
字符串
正在加载...
visibility
字符串
正在加载...
isEntry
布尔型
正在加载...
typeParameters
数组
正在加载...
parameters
数组
正在加载...
reference
字符串
正在加载...
正文
对象
正在加载...
类型
字符串
正在加载...
typeName
字符串
正在加载...
typeParameterInstantiation
数组
正在加载...
类型
字符串
正在加载...
typeParameter
整数
正在加载...
returns
数组
正在加载...
正文
对象
正在加载...
类型
字符串
正在加载...
typeName
字符串
正在加载...
typeParameterInstantiation
数组
正在加载...
类型
字符串
正在加载...
typeParameter
整数
正在加载...
请求
1grpcurl \2-import-path . \3-proto sui/rpc/v2/move_package_service.proto \4-H "x-token: abcde123456789" \5-d '{6"package_id": "0x2",7"module_name": "coin",8"name": "mint"9}' \10docs-demo.mainnet.quiknode.pro:9000 \11sui.rpc.v2.MovePackageService/GetFunction12
1grpcurl \2-import-path . \3-proto sui/rpc/v2/move_package_service.proto \4-H "x-token: abcde123456789" \5-d '{6"package_id": "0x2",7"module_name": "coin",8"name": "mint"9}' \10docs-demo.mainnet.quiknode.pro:9000 \11sui.rpc.v2.MovePackageService/GetFunction12
1包 main23import (4"上下文"5"crypto/tls"6"encoding/json"7"fmt"8“日志”9“时间”1011"google.golang.grpc"12"google.golang.grpc"13"google.golang.org/protobuf/encoding/protojson"1415pb "sui" // 您生成的 .pb.go 文件路径16)1718// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token19// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678920// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}21// token will be : abcde1234567892223var (24token = "您的令牌编号"25endpoint = "您的QN端点:9000"26)2728// Auth structure for x-token29类型 auth 结构体 {30token 字符串31}3233func (a *auth) GetRequestMetadata(ctx 上下文.Context, uri ...字符串) (map[字符串]字符串, error) {34return map[string]string{"x-token": a.token}, nil35}36func (a *auth) RequireTransportSecurity() bool {37返回 true38}3940func main() {41creds := credentials.NewTLS(&tls.Config{})42opts := []grpc.DialOption{43grpc.WithTransportCredentials(creds),44grpc.WithPerRPCCredentials(&auth{令牌}),45}4647conn, err := grpc.Dial(endpoint, opts...)48如果 err != nil {49log.Fatalf("连接失败:%v", err)50}51推迟 conn.关闭()5253client := pb.NewMovePackageServiceClient(conn)5455packageID := "0x2"56moduleName := "coin"57functionName := "mint"5859req := &pb.GetFunctionRequest{60PackageId: &packageID,61ModuleName: &moduleName,62Name: &functionName,63}6465ctx, 取消 := context.带超时(context.Background(), 10*时间.第二次)66推迟 取消()6768resp, err := client.GetFunction(ctx, req)69如果 err != nil {70log.Fatalf("GetFunction failed: %v", err)71}7273marshaler := protojson.MarshalOptions{74UseProtoNames: true,75EmitUnpopulated: true,76缩进: " ",77}7879jsonBytes, err := marshaler.Marshal(resp)80如果 err != nil {81log.Fatalf(“序列化失败:%v”, err)82}8384var pretty map[字符串]接口{}85if err := json.Unmarshal(jsonBytes, &pretty); err != nil {86log.Fatalf(“无法解析 JSON:%v”, err)87}8889out, _ := json.MarshalIndent(pretty, "", " ")90fmt.Println(字符串(out))91}92
1包 main23import (4"上下文"5"crypto/tls"6"encoding/json"7"fmt"8“日志”9“时间”1011"google.golang.grpc"12"google.golang.grpc"13"google.golang.org/protobuf/encoding/protojson"1415pb "sui" // 您生成的 .pb.go 文件路径16)1718// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token19// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678920// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}21// token will be : abcde1234567892223var (24token = "您的令牌编号"25endpoint = "您的QN端点:9000"26)2728// Auth structure for x-token29类型 auth 结构体 {30token 字符串31}3233func (a *auth) GetRequestMetadata(ctx 上下文.Context, uri ...字符串) (map[字符串]字符串, error) {34return map[string]string{"x-token": a.token}, nil35}36func (a *auth) RequireTransportSecurity() bool {37返回 true38}3940func main() {41creds := credentials.NewTLS(&tls.Config{})42opts := []grpc.DialOption{43grpc.WithTransportCredentials(creds),44grpc.WithPerRPCCredentials(&auth{令牌}),45}4647conn, err := grpc.Dial(endpoint, opts...)48如果 err != nil {49log.Fatalf("连接失败:%v", err)50}51推迟 conn.关闭()5253client := pb.NewMovePackageServiceClient(conn)5455packageID := "0x2"56moduleName := "coin"57functionName := "mint"5859req := &pb.GetFunctionRequest{60PackageId: &packageID,61ModuleName: &moduleName,62Name: &functionName,63}6465ctx, 取消 := context.带超时(context.Background(), 10*时间.第二次)66推迟 取消()6768resp, err := client.GetFunction(ctx, req)69如果 err != nil {70log.Fatalf("GetFunction failed: %v", err)71}7273marshaler := protojson.MarshalOptions{74UseProtoNames: true,75EmitUnpopulated: true,76缩进: " ",77}7879jsonBytes, err := marshaler.Marshal(resp)80如果 err != nil {81log.Fatalf(“序列化失败:%v”, err)82}8384var pretty map[字符串]接口{}85if err := json.Unmarshal(jsonBytes, &pretty); err != nil {86log.Fatalf(“无法解析 JSON:%v”, err)87}8889out, _ := json.MarshalIndent(pretty, "", " ")90fmt.Println(字符串(out))91}92
1import * 作为 grpc from grpc;2import * 作为 protoLoader from grpc;3import * 作为 路径 from '路径';45// Configuration6const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2/move_package_service.proto');78// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token9// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678910// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}11// token will be : abcde1234567891213const endpoint = 'docs-demo.mainnet.quiknode.pro:9000';14const 令牌 = 'abcde123456789';1516// Load protobuf definitions17const 包定义 = protoLoader.loadSync(PROTO_PATH, {18keepCase: true,19多头: 字符串,20枚举: 字符串,21默认值: true,22oneofs: true,23includeDirs: [路径.join(__dirname, 'protos/proto')],24});2526const proto = grpc.loadPackageDefinition(packageDefinition) 作为 any;27const MovePackageService = proto.sui.rpc.v2.MovePackageService;2829// Create secure client30const client = new MovePackageService(endpoint, grpc.credentials.createSsl());3132// Add token metadata33const 元数据 = new grpc.元数据();34元数据.添加('x-token', token);3536// Request payload37const 请求 = {38package_id: '0x2',39module_name: 'coin',40name: 'mint',41};4243// Perform gRPC call44client.GetFunction(request, metadata, (err: grpc.ServiceError | null, response: any) => {45如果 (err) {46console.error('gRPC Error:', {47代码: err.代码,48消息: err.消息,49详细信息: err.详情,50});51} else {52console.log('GetFunction Response:');53控制台.日志(JSON.stringify(response, null, 2));54}55});56
1import * 作为 grpc from grpc;2import * 作为 protoLoader from grpc;3import * 作为 路径 from '路径';45// Configuration6const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2/move_package_service.proto');78// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token9// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678910// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}11// token will be : abcde1234567891213const endpoint = 'docs-demo.mainnet.quiknode.pro:9000';14const 令牌 = 'abcde123456789';1516// Load protobuf definitions17const 包定义 = protoLoader.loadSync(PROTO_PATH, {18keepCase: true,19多头: 字符串,20枚举: 字符串,21默认值: true,22oneofs: true,23includeDirs: [路径.join(__dirname, 'protos/proto')],24});2526const proto = grpc.loadPackageDefinition(packageDefinition) 作为 any;27const MovePackageService = proto.sui.rpc.v2.MovePackageService;2829// Create secure client30const client = new MovePackageService(endpoint, grpc.credentials.createSsl());3132// Add token metadata33const 元数据 = new grpc.元数据();34元数据.添加('x-token', token);3536// Request payload37const 请求 = {38package_id: '0x2',39module_name: 'coin',40name: 'mint',41};4243// Perform gRPC call44client.GetFunction(request, metadata, (err: grpc.ServiceError | null, response: any) => {45如果 (err) {46console.error('gRPC Error:', {47代码: err.代码,48消息: err.消息,49详细信息: err.详情,50});51} else {52console.log('GetFunction Response:');53控制台.日志(JSON.stringify(response, null, 2));54}55});56
1import grpc2导入 json3来源 谷歌.protobuf.json_format import MessageToDict4from sui.rpc.v2 import move_package_service_pb2, move_package_service_pb2_grpc567def get_function():89#Quicknode 由两个关键组成部分构成:endpoint 和相应的令牌10# 例如:QNEndpoint:mainnet11# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# token will be : abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617频道 = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = move_package_service_pb2_grpc.MovePackageServiceStub(channel)1920package_id = "0x2"21module_name = "coin"22name = "mint"2324request = move_package_service_pb2.GetFunctionRequest(25package_id=package_id,26module_name=module_name,27name=name28)2930元数据 = [("x-token", token)]3132return stub.GetFunction(request, metadata=metadata)333435def parse_response_to_json(response):36返回 json.dumps(37MessageToDict(response, 保留_proto_字段_名称=True),38缩进=239)404142def main():43试一试:44response = get_function()45打印(parse_response_to_json(response))46除了 grpc。RpcError 作为 e:47print(f"{e.code().name}: {e.details()}")4849如果 __name__ == "__main__":50主()51
1import grpc2导入 json3来源 谷歌.protobuf.json_format import MessageToDict4from sui.rpc.v2 import move_package_service_pb2, move_package_service_pb2_grpc567def get_function():89#Quicknode 由两个关键组成部分构成:endpoint 和相应的令牌10# 例如:QNEndpoint:mainnet11# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# token will be : abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617频道 = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = move_package_service_pb2_grpc.MovePackageServiceStub(channel)1920package_id = "0x2"21module_name = "coin"22name = "mint"2324request = move_package_service_pb2.GetFunctionRequest(25package_id=package_id,26module_name=module_name,27name=name28)2930元数据 = [("x-token", token)]3132return stub.GetFunction(request, metadata=metadata)333435def parse_response_to_json(response):36返回 json.dumps(37MessageToDict(response, 保留_proto_字段_名称=True),38缩进=239)404142def main():43试一试:44response = get_function()45打印(parse_response_to_json(response))46除了 grpc。RpcError 作为 e:47print(f"{e.code().name}: {e.details()}")4849如果 __name__ == "__main__":50主()51