Как сделать, чтобы интерфейсная служба App Engine использовала API из другой службы App Engine - PullRequest
0 голосов
/ 14 октября 2019

У меня есть две службы App Engine, одна для моего внешнего интерфейса React, а другая для моего внутреннего интерфейса Express. Не то чтобы эти две вещи были частью одного и того же приложения, они представляют собой разные сервисы и, следовательно, имеют разные URL-адреса, через которые они получают доступ.

Все запросы в моем приложении React настроены на использование полного URL-адресавнутренние конечные точки, например:

Axios.get(`https://backend.appspot.com/api/v1/users/get/${userId}`)

Однако это означает, что я не могу разрабатывать свой внутренний компонент локально, поскольку приложение React всегда указывает на службу App Engine.

Я пытаюсь добиться чего-то похожего на то, что было бы, если бы ваш бэкэнд и клиентский интерфейс находились на одном и том же сервере, а вы просто использовали настройку прокси-сервера React, позволяя вам отправлять запросы к вашим конечным точкам следующим образом:

Axios.get(`/api/v1/users/get/${userId}`)

Я пытался вручную настроить прокси-сервер, хотя теперь мне интересно, если это совсем не тот подход.

Есть предложения?

Примечание. Пожалуйста, дайте мне знатьесли этот вопрос требует дальнейшего объяснения

1 Ответ

0 голосов
/ 14 октября 2019

Я не думаю, что можно достичь чего-то такого же, как разработка в вашей локальной среде, но у вас всегда есть возможность настроить правила маршрутизации и URL-адреса по своему усмотрению.

Чтобы создать свои собственные правила маршрутизации, вы можете использовать файл dispatch.yaml , чтобы определить их в нем. Таким образом, вы можете точно выбрать, как ваши запросы будут перенаправлены .

Что касается вашего беспокойства о процессе разработки, вам необходимо выполнить некоторую настройку в вашем коде. По сути, вам нужно сделать свое приложение достаточно умным, чтобы знать, где оно работает: локально или на движке приложения.

Для этого я бы порекомендовал вам определить в вашем app.yaml переменную env следующим образом:

env_variables:
IS_APPENGINE: 'true'

Затем в вашем приложении вы можете проверитьгде он запущен и задайте пути к URL-адресам:

if(Platform.environment['IS_APPENGINE'] == 'true') {
URL1 = .....
URL2 = .....}  else{
URL1 = localhost/page1..
URL2 = localhost/page2..
}

В этой записи также обсуждается эта тема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...