跳到主要内容

File API

什么是File API

File api 用于实现文件操作。应用程序可以通过该接口对文件进行CRUD操作。该接口支持大文件的流式传输。

如何使用File API

File api定义在 runtime.proto 。应用可以通过grpc调用 对应的File api,实现文件的操作。

该接口在使用前需要进行配置。不同的文件系统可能配置不同,用户可根据自己的文件系统进行配置。比如OSS详细配置项可参考 OSS组件文档

例子

当前提供了基于layotto访问aliyun oss文件系统的示例,具体可参照 文件演示

接口定义

  // Get file with stream
rpc GetFile(GetFileRequest) returns (stream GetFileResponse) {}

// Put file with stream
rpc PutFile(stream PutFileRequest) returns (google.protobuf.Empty) {}

// List all files
rpc ListFile(ListFileRequest) returns (ListFileResp){}

// Delete specific file
rpc DelFile(DelFileRequest) returns (google.protobuf.Empty){}

调研和讨论

参考:

api的设计请参考下面的issue:

https://github.com/mosn/layotto/issues/98

接口参数

message GetFileRequest {
//
string store_name = 1;
// The name of the file or object want to get.
string name = 2;
// The metadata for user extension.
map<string,string> metadata = 3;
}

message GetFileResponse {
bytes data = 1;
}

message PutFileRequest {
string store_name = 1;
// The name of the file or object want to put.
string name = 2;
// The data will be store.
bytes data = 3;
// The metadata for user extension.
map<string,string> metadata = 4;
}

message FileRequest {
string store_name = 1;
// The name of the directory
string name = 2;
// The metadata for user extension.
map<string,string> metadata = 3;
}

message ListFileRequest {
FileRequest request = 1;
}

message ListFileResp {
repeated string file_name = 1;
}

message DelFileRequest {
FileRequest request = 1;
}

读文件

  // Get file with stream
rpc GetFile(GetFileRequest) returns (stream GetFileResponse) {}

为避免文档和代码不一致,详细入参和返回值请参考 the newest proto file.

写文件

  // Put file with stream
rpc PutFile(stream PutFileRequest) returns (google.protobuf.Empty) {}

为避免文档和代码不一致,详细入参和返回值请参考 the newest proto file.

删文件

// Delete specific file
rpc DelFile(DelFileRequest) returns (google.protobuf.Empty){}

为避免文档和代码不一致,详细入参和返回值请参考 the newest proto file.

查文件

// List all files
rpc ListFile(ListFileRequest) returns (ListFileResp){}

为避免文档和代码不一致,详细入参和返回值请参考 the newest proto file.