Изменил(а) на 'Home'

Василий Толстов 2023-07-12 00:19:29 +03:00
parent 6ef1194379
commit 0a9ec0696e

83
Home.md

@ -1,11 +1,80 @@
Описание прото опций и типов:
* micro.codec.Frame (import "codec/frame.proto"):
- специальный тип данных, про который знают все микро кодеки и ничего не делают с сообщением в этом случае а просто копируют байты как есть.
- пример: rpc Call(micro.codec.Frame)
* micro.tag.tags (import "tag/tag.proto"):
* micro.codec.Frame (```import "codec/frame.proto";```):
- специальный тип данных, про который знают все микро кодеки и ничего не делают с сообщением в этом случае? а просто копируют байты как есть.
- пример:
```
rpc Call(micro.codec.Frame) returns (micro.codec.Frame) {};
```
* micro.tag.tags (```import "tag/tag.proto";```):
- позволяет управлять тегами для гененируемых полей структуры (добавить, изменить существующие).
- пример: (micro.tag.tags) = "xml:\"field_name,omitempty\""
- пример:
```
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 {
};
```