syntax = "proto3"; import "google/protobuf/timestamp.proto"; import "gogoproto/gogo.proto"; // import "validate/validate.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; package api.v1; option go_package = "moredoc/api/v1;v1"; option java_multiple_files = true; option java_package = "api.v1"; // 文章 message Article { int64 id = 1; // 文章ID string identifier = 2; // 文章唯一标识 string author = 3; // 文章作者。如果为空,则使用网站名称作为作者 int64 view_count = 4; // 文章浏览次数 string title = 5; // 文章标题 string keywords = 6; // 文章关键字 string description = 7; // 文章描述 string content = 8; // 文章内容 google.protobuf.Timestamp created_at = 9 [ (gogoproto.stdtime) = true ]; // 文章创建时间 google.protobuf.Timestamp updated_at = 10 [ (gogoproto.stdtime) = true ]; // 文章更新时间 } // 删除文章请求,传入单个或者多个文章ID message DeleteArticleRequest { repeated int64 id = 1; } // 根据ID或者文章标识获取文章,二选一 message GetArticleRequest { int64 id = 1; // 文章ID string identifier = 2; // 文章唯一标识 } // 文章列表请求 message ListArticleRequest { int64 page = 1; // 页码 int64 size = 2; // 每页数量 string wd = 3; // 搜索关键字 repeated string field = 4; // 查询字段 string order = 5; // 排序字段,根据指定的字段倒序排序 } // 文章列表响应 message ListArticleReply { int64 total = 1; // 文章总数 repeated Article article = 2; // 文章列表 } // 文章API服务 service ArticleAPI { // 创建文章 rpc CreateArticle(Article) returns (google.protobuf.Empty) { option (google.api.http) = { post : '/api/v1/article', body : '*', }; } // 更新文章 rpc UpdateArticle(Article) returns (google.protobuf.Empty) { option (google.api.http) = { put : '/api/v1/article', body : '*', }; } // 删除文章 rpc DeleteArticle(DeleteArticleRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete : '/api/v1/article', }; } // 获取文章 rpc GetArticle(GetArticleRequest) returns (Article) { option (google.api.http) = { get : '/api/v1/article', }; } // 文章列表 rpc ListArticle(ListArticleRequest) returns (ListArticleReply) { option (google.api.http) = { get : '/api/v1/article/list', }; } }