2 Home
Vasiliy Tolstov edited this page 2023-07-12 00:19:29 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Описание прото опций и типов:

  • 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 {
    
    };