18.Swift版grpc请求
目录介绍
- 01.Swift版grpc项目
- 1.1 RPC简单介绍
- 1.2 gRPC简单介绍
- 02.gRPC-Swift准备步骤
- 2.1 安装Protocol编译器
- 2.2 引入gRPC-Swift
- 2.3 创建.porto文件编译
- 2.4 生成文件说明
- 03.gRPC-Swift调用步骤
- 3.1 调用gRPC服务
- 3.2 如何调试gRPC服务
- 3.3 设置ip或域名
01.Swift版grpc项目
1.1 RPC简单介绍
简单来说,HTTP+REST方式,聚焦在数据data上:发送一个请求request,然后返回数据response。
而RPC,聚焦在「方法」上——直接调用一个「方法/函数/command」——只是对比于在同一个软件内部调用方法,RPC中调用有点不太一样,它是从电脑A,直接调用电脑B中的某个「方法」,是一个远程调用(Remote Call)。
然后这个「方法」和我们常见的「方法」一样,会有参数、返回值。要传输的数据,就放在参数、返回值里面,最终实现数据的传输。
1.2 gRPC简单介绍
gRPC是Google主导的对RPC的具体实现。卖点:高性能、开源、通用(支持很多语言: Supported languages)。
其中,Protocol Buffers,有需要认识一下的。可以把它类比成XML、JSON,但是Protocol Buffers的数据包更小、速度更快、实现更简单。
02.gRPC-Swift准备步骤
2.1 安装Protocol编译器
需要安装Protocol Buffers(protobuf)编译器,通常称为protoc。可以通过访问Google Protobuf GitHub下载适合你操作系统的版本。
如果没有安装这个插件而运行生成代码的指令,报错command not found: protoc
brew install protobuf
brew install grpc
# 注意需要用这个,这个是针对swift的
brew install swift-protobuf grpc-swift
2.2 引入gRPC-Swift
如下所示:
# grpc库:https://github.com/grpc/grpc-swift
pod 'gRPC-Swift', '~> 1.0'
# 依赖Protobuf插件
pod 'Protobuf', '~> 3.0'
然后运行: pod install
可能还需要添加use_frameworks!到您的Podfile。
2.3 创建.porto文件编译
创建一个.proto文件,例如 helloworld.proto
syntax = "proto3";
package example;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
在终端中,使用 Protocol Buffers 的编译器 protoc 将 .proto 文件编译为 Swift 代码。确保你已经安装了 Protocol Buffers 的编译器。
#首先测试protoc是否OK
$ protoc --version
#显示了版本则说明正常
libprotoc 29.1
# 具体可以参考:https://www.jianshu.com/p/d487dc2e3bb8
protoc --swift_out=. --grpc-swift_out=. helloworld.proto
这将会生成两个文件:Server.pb.swift 和 Server.grpc.swift,包含了必要的类和方法以便在 Swift 中使用。
2.4 生成文件说明
可以看到,两个文件(命名还有点奇怪):
$ protoc --swift_out=. --grpc-swift_out=. helloworld.proto
$ pwd
/Users/yc/github/WxiOSPalmDa/iOSPalmDa/WxiOSPalmDa/Protos
$ ls
helloworld.grpc.swift helloworld.pb.swift helloworld.proto
- .grpc.swift文件生成的是:API接口方法(对应上面的SayHello方法)、Client(App端用到)、Provider(实现后台时用到——后台工程师用)
- .pb.swift文件生成的是:模型类(对应上面的HelloRequest ,HelloReply)
03.gRPC-Swift调用步骤
3.1 调用gRPC服务
3.2 如何调试gRPC服务
3.3 设置ip或域名
参考博客
项目:https://github.com/grpc/grpc-swift
grpc-swift入门:https://www.jianshu.com/p/d487dc2e3bb8
ios 接入GRPC 原创:https://blog.51cto.com/u_16213339/11933455