package
0.0.0-20250120084933-b1aebbf4c101
Repository: https://github.com/long250038728/web.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

http 跟 grpc对比

grpc
    1.可以通过protoc buffer 进行序列化/反序列化,传输性能高(proto文件双方都有,所以在序列化/反序列化的时候无需存放其他额外的信息)
    2.类似强类型语言(这个client有什么方法,方法中的参数是什么)—— protoc buffer
    3.同时也是弱点。客户端需要知道protoc文件才能调用,如果什么网站都需要这个,那无法进行下去,(常用于内部调用)
http
    1.调用是只需要地址+ip就可以获取数据(常用于外部调用)
    2.由于无需protoc文件,导致序列化只能用xml,json等,性能差
    3.类似弱类型语言(传一个dict字段,后端需要根据自己的key获取对应的value,可能由于输错发送跟获取不是同一个key)

安装protoc及grpc插件

go install google.golang.org/protobuf/cmd/[email protected]
go install google.golang.org/grpc/cmd/[email protected]
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest
export PATH="$PATH:$(go env GOPATH)/bin"

用go gen

protoc \
--go_out=. \
--go_opt=paths=source_relative \
--go-grpc_out=. \
--go-grpc_opt=paths=source_relative \
--openapiv2_out=. \
-I=/Users/linlong/go/src/  -I=./ \
userServer.proto
参数解释 -其他
--go_outgo文件生成的目录
--go-grpc_outgrpc-go文件生成的目录
--go_opt=paths=source_relative / --go_opt=paths=import按源文件的目录组织输出
--go-grpc_opt=paths=source_relative按源文件的目录组织输出
 protoc --go_out=./p/ --go_opt=paths=source_relative  --go-grpc_out=./p/  --go-grpc_opt=paths=source_relative  demo.proto  //根据目录组织
 protoc --go_out=./i/ --go_opt=paths=import  --go-grpc_out=./i/  --go-grpc_opt=paths=import  demo.proto  //根据protoc 中的import