【发布时间】:2020-03-26 11:00:35
【问题描述】:
目前正在开发使客户端(Android/Kotlin)能够从服务器下载视频的 API。使用传统的 HTTP URI 这将是一项非常容易的任务,我只需 DownloadManager 即可解决问题。但是,我在服务器上使用 gRPC (c++)。
我目前有一个 Kotlin 流的解决方案,它基本上从服务器获取单向流并使用文件块将它们存储在本地文件中。然而,即使它适用于主要部分,它也有很多极端情况,这就是我想使用 DownloadManager 的原因。有关我目前拥有的更多信息,请查看:Handling file download with gRPC on Android
在寻找解决方案一段时间后,我发现可以使用project 将 RPC 调用映射到 REST API,并且基本上可以执行以下操作:
rpc Download(DownloadRequest) returns (DownloadResponse) {
option (google.api.http) = {
post: "/v1/download"
body: "*"
};
}
或使用 YAML 文件来配置 google API。
所有这些在使用 Google Cloud 和 Golang 时似乎都非常方便,但是我正在用 C++ 创建一个独立服务器。
所以这里有两个问题:
是否可以使用 gRPC c++ 以 REST 方式提供静态文件
还有其他方法可以将 DownloadManager 与 gRPC 一起使用吗?
【问题讨论】:
-
gRPC 用于结构化数据。如果您只想下载文件,请使用流式传输原始文件内容的简单 HTTP 服务器。
-
所以我应该启动两台服务器,一台用于文件,一台用于 grpc ?这就是你的意思?