Skip to content

Использование встроенного в продукты Intellij gRPC-клиента #4

Open
tumb1er opened this issue Dec 30, 2021 · 2 comments
Labels
documentation Improvements or additions to documentation

Comments

@tumb1er
Copy link
Contributor

tumb1er commented Dec 30, 2021

Добрый день.

Не знаю, достойно ли это упоминания в документации, но мне удалось подтвердить работоспособность запросов в Intellij GoLand 2021.3.1

Для начала, плагин GRPC еще в зачаточном состоянии, поэтому много еще не работает. Например, он не осилил включить TLS и прокинуть заголовок Authorization. Поэтому настраиваем nginx примерно с таким конфигом:

server {
    listen 9000 http2;
    location / {
        # подстилка под Intellij gRPC plugin, который не пробрасывает заголовки
        grpc_set_header Authorization "Bearer t.myLongTokenValue";
        # подстилка под Intellij gRPC  plugin, который не включает TLS
        grpc_pass grpcs://invest-public-api.tinkoff.ru:443;
    }
}
  1. Загружаем proto-файлы в любую директорию проекта
  2. В Settings - Languages & Frameworks - Protocol Buffers вручную добавляем путь до этой директории, чтобы IDE увидело proto-файлы
  3. Открываем proto-файл, напротив rpc вызовов будет иконка "Generate request in HTTP Client"
  4. При клике откроется редактор файла "generated-requests.http" где-то в недрах директорий IDE, где из-за многочисленных недоработок плагина GRPC надо указать в качестве хоста адрес локального nginx (localhost:9000).

В итоге, получаем рабочие "простые" запросы:

localhost:9000/tinkoff.public.invest.api.contract.v1.UsersService/GetInfo

{
  "qualifiedForWorkWith": [
    "bond",
    "foreign_etf",
    "foreign_shares"
  ]
}

Response file saved.
> 2021-12-30T120506.OK.json
@betslus1
Copy link

Интересное решение, в т.ч. Для легирования и балансировки, может кому то и пригодится.

Единственное, что если кто-то будет копировать это в продакшен, не забывайте ограничить доступ к nginx из вне. Иначе каждый сможет слать ваши запросы.

@tumb1er
Copy link
Contributor Author

tumb1er commented Dec 30, 2021

Главное, не прописывать в конфиге nginx токен "на проде". Да и вообще.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

3 participants