Описание прото опций и типов:
-
micro.codec.Frame (
import "codec/frame.proto";
):- специальный тип данных, про который знают все микро кодеки и ничего не делают с сообщением в этом случае? а просто копируют байты как есть.
- пример:
rpc Call(micro.codec.Frame) returns (micro.codec.Frame) {};
-
micro.tag.tags (
import "tag/tag.proto";
):- позволяет управлять тегами для гененируемых полей структуры (добавить, изменить существующие).
- пример:
string my_proto_filed = 1 [(micro.tag.tags) = "xml:\"field_name,omitempty\""];
-
micro.api.http (
import "api/annotations.proto";
):- специальный тип, используется как для генерации опенапи описания, так и для генерации микро хттп клиента и сервера.
- пример:
rpc Call(micro.codec.Frame) returns (micro.codec.Frame) { option (micro.api.http) = { post: "/v1/call"; body: "*"; }; };
-
micro.api.micro_method (
import "api/annotations.proto";
);- специальный тип, используется при генерации грпц и хттп клиента и сервера. Служит для указания максимального времени вызова или обработки запроса.
- пример:
rpc Call(micro.codec.Frame) returns (micro.codec.Frame) { option (micro.api.micro_method) = { timeout: "5s"; }; };
-
micro.openapiv3.openapiv3_operation (
import "openapiv3/annotations.proto";
):- специальный тип, используется при генерации опенапи описания, а также при генерации хттп клиента и сервера.
- пример:
package example; rpc Call(micro.codec.Frame) returns (micro.codec.Frame) { option (micro.openapiv3.openapiv3_operation) = { operation_id: "Call"; responses: { default: { reference: { _ref: ".example.ErrorRsp"; }; }; }; parameters: { parameter: { name: "Clientid"; // имя поля структуры in: "header"; // откуда брать данные или куда записывать schema: { schema: { type: "string"; // тип данных в опенапи спецификации }; }; required: true; // обязательность поля }; }; parameters: { parameter: { name: "Csrftoken"; in: "cookie"; schema: { schema: { type: "string"; }; }; required: true; }; }; }; } message ErrorRsp { };