170 похожих чатов

Как реализовать grpc ендпоинт, чтобы фронтенд получал ответ в формате

json?

62 ответов

84 просмотра
SD- Автор вопроса

?

По какому протоколу ты хочешь, чтобы фронтенд получал json?

SD- Автор вопроса
Alexander
По какому протоколу ты хочешь, чтобы фронтенд полу...

Вообще вопрос странный, grpc использует http2, и бинарный формат данных, фронт требует json, можно же преобразовать бинарные данные в json и вернуть фронту

SD
http2

По http2 или по grpc?

SD
Вообще вопрос странный, grpc использует http2, и б...

Можно, но этим будет не grpc-эндпоинт заниматься. Можешь написать сервис-прослойку, который будет забирать данные по grpc и отдавать json-ом по http. Ну или добавить в сервис http+json эндпоинты

SD- Автор вопроса
Alexander
Можно, но этим будет не grpc-эндпоинт заниматься. ...

Да, я вот и спросил с целью узнать как правильнее сделать

SD
Да, я вот и спросил с целью узнать как правильнее ...

Зависит от того, как тебе удобнее, в общем-то. Либо от корпоративной политики :)

SD- Автор вопроса
Alexander
Зависит от того, как тебе удобнее, в общем-то. Либ...

А вообще при состыковке react и grpc, как лучше фронту отдавать?

SD
А вообще при состыковке react и grpc, как лучше фр...

Никак, браузеры не умеют работать с grpc. Делай для браузеров отдельные эндпоинты.

SD
А вообще при состыковке react и grpc, как лучше фр...

Можешь попробовать посмотреть в сторону grpc-web, который предлагает прокси, транслируют grpc в удобоваримую для браузерного js-а форму.

Java RPC

SD- Автор вопроса
Mark Maxwell
Java RPC

Прикол из требований в вакансии, в golang jobs

SD- Автор вопроса
Alexander
Можешь попробовать посмотреть в сторону grpc-web, ...

- во-первых обработка ошибок оч плохая - во-вторых заголовки неадаптированные типа grpc-status заставят поплясать - в-третьих у нас были сложности с отображением ответа в браузере кароч тулинг не готов был либо фронтендеры не могли этим занятьс и не хотели Может envoy?

SD
- во-первых обработка ошибок оч плохая - во-вторых...

Я его не юзал. Вообще, я бы просто отдельный набор эндпоинтов под потребности браузера нарисовал.

SD- Автор вопроса
Alexander
Я его не юзал. Вообще, я бы просто отдельный набор...

Можешь пример показать плиз, где rest используется рядом с эндпоинтами grpc?

SD
Можешь пример показать плиз, где rest используется...

В паблике нет, но на предыдущем месте работы так активно делали, пока техдир с подачи безопасников не приказал распилить сервисы на отдельно grpc-бэки с бизнес-логикой и обертки с http api и фронтом.

Я читал статью, что разделять еще правильно надо.

SD- Автор вопроса
Alexander
В паблике нет, но на предыдущем месте работы так а...

Хм, а что опасного держать в одном месте grpc и rest?

SD- Автор вопроса
Alexander
В паблике нет, но на предыдущем месте работы так а...

Т е фронт дёргал обертки http api а обертки в свою очередь обращались к grpc?

SD
Т е фронт дёргал обертки http api а обертки в свою...

У меня такое было на нескольких проектах, при чём везде по разному назывался "gateway service", "frontend service", "api service". HTTP в мир, а внутри всё на gRPC

SD- Автор вопроса

В delivery его надо, не в адаптеры

SD
В delivery его надо, не в адаптеры

Точно понимаешь про что я говорю ?

SD- Автор вопроса
SD
В delivery его надо, не в адаптеры

delivery это что? Контроллеры?

SD
Про чистую архитектуру

Про хексогональную. Где есть driven и secondary adapter. (В целом идейно чистая) Мне кажется, grps — это presentation слой. Просто не совсем понимаю что такое delivery

SD- Автор вопроса
Bol4onok
Точно понимаешь про что я говорю ?

В адаптерах gateway как правило для dao, delivery он же presentation layer используется для grpc, http api, graphql

SD
В адаптерах gateway как правило для dao, delivery ...

В хексогональной два вида адаптеров. Primary — presentation. Secondary — инфраструктурные. С разных сторон типо.

SD- Автор вопроса
SD
Хм, а что опасного держать в одном месте grpc и re...

Для grpc есть обязатеоьный внутренний фреймворк аутентификации и авторизации клиентов, а для http эндпоинтов разброд и шатание. Потому потребовали от команд отделить сервисы с бизнес-логикой и grpc с нормальной аутентификацией и авторизацией и http-сервисы

Потому что так было заведено в компании: grpc обязательно для s2s, а остальное по потребности

или secondary

SD- Автор вопроса
Alexander
Для grpc есть обязатеоьный внутренний фреймворк ау...

Те вы вынесли аутентификацию и авторизацию на grpc?

Rostislav Teryaev
или secondary

Обработчик запрсов — presentation Клиент от других API — адаптер

SD- Автор вопроса

В Go например соединение с бд выносят в отдельных пакет в папке pkg

SD
В Go например соединение с бд выносят в отдельных ...

О.o Столько вопросов. Что значит "вынести соединение в пакет"? Почему "pkg"? Что за название? Почему не адаптер? Как название пакета влияет на реализацию

SD
Те вы вынесли аутентификацию и авторизацию на grpc...

Нет, s2s AA для grpc отдельно, а для http отдельно (уже в зависимости от потребностей сервиса). Просто для grpc была реализована функциональность на уровне общего фреймворка.

SD- Автор вопроса
Айван
О.o Столько вопросов. Что значит "вынести соединен...

Коннект к бд это внешняя зависимость не имеющая отношения к ча, зачем тебе в ча тащить коннект к бд?) Мартин писал об этом, но все почему то тащат Коннект к бд в чистую архитектуру адаптеров

SD
Коннект к бд это внешняя зависимость не имеющая от...

может потому что эти все понимают, что такое адаптеры?

SD- Автор вопроса
Айван
О.o Столько вопросов. Что значит "вынести соединен...

Я делаю слой адаптеров внутри usecase для соединения с внешними слоями репозитория например, а подключение к бд выношу в отдельный пакет вне ЧА

SD
Я делаю слой адаптеров внутри usecase для соединен...

Ты либо интерфейсы адаптерами называешь, либо у тебя нарушен DIP

SD
Интерфейсы

это порты называется

SD
Интерфейсы

Адаптерами называют реализации, не интерфейсы

https://refactoring.guru/ru/design-patterns/adapter (простите, нужен VPN. Изображения кидать нельзя~)

SD- Автор вопроса
Айван
https://refactoring.guru/ru/design-patterns/adapte...

Да все правильно, я разделяю на слои delivery, domain, repository(использует gateway, dao), usecase(содержит интерфейсы) Само подключение к бд у меня в pkg, как внешняя зависимость, в остальном все как вы показывает на картинке

SD
Да все правильно, я разделяю на слои delivery, dom...

откуда берется этот деливери загадочный. Не первый раз встречаю в чате, но не встречаю больше нигде

SD- Автор вопроса
Rostislav Teryaev
откуда берется этот деливери загадочный. Не первый...

Сразу видно что вы не работали в крупном продакшене)

К чему это? Адаптер в ЧА это частный случай адаптеров как паттерна

Похожие вопросы

Обсуждают сегодня

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта