Я пытаюсь настроить NodeJS REST API с помощью конечных точек Google Cloud и Google App Engine. Я клонировал официальный образец проекта с GitHub и настройте конечные точки Google Cloud с помощью Quickstart. Из коробки он работает нормально, но я попытался добавить еще одну конечную точку API для запроса GET на /
, но после развертывания и отправки запроса я получил следующий ответ:
{
"code": 5,
"message": "Method does not exist.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "service_control"
}
]
}
Предварительно настроенные API-интерфейсы работают нормально, но не работают только новые, которые я добавляю.
Я правильно настроил новую конечную точку в своем приложении NodeJS (локально работает нормально). Соответствующий код, который я добавил:
app.get('/', function (req, res) {
res.status(200).json({ message: 'Hello, world!' });
});
Я добавил в свой openapi.yaml
файл следующее:
paths:
"/":
get:
description: "Returns the message \"Hello, World\""
operationId: "root"
produces:
- "application/json"
responses:
200:
description: "Hello"
schema:
$ref: "#/definitions/helloMessage"
definitions:
helloMessage:
properties:
message:
type: "string"
После запуска gcloud service-management deploy openapi.yaml
с терминала для развертывания и настройки конечных точек Google Cloud я получил имя службы и идентификатор конфигурации службы, которые я заменил в app.yaml
, в формате, указанном в QuickStart.
endpoints_api_service:
name: echo-api.endpoints.[YOUR-PROJECT-ID].cloud.goog
config_id: YOUR-CONFIG-ID
(Это формат, я заменил YOUR-PROJECT-ID
и YOUR-CONFIG-ID
на нужные)
Я развернул приложение в Google App Engine с помощью gcloud app deploy
. Я вижу, что приложение работает правильно, через консоль Google App Engine.
Тем не менее, метод GET на /
не определяется как допустимая конечная точка, и я получаю ответ, как указано выше.
Я что-то упускаю? Я много искал по этой проблеме, но ничего полезного / похожего не нашел!
PS: Под добавленным я подразумеваю код, который я добавил в соответствующий клонированные файлы GitHub
РЕДАКТИРОВАТЬ: я изменил конечную точку API с /
на /hello
, и она отлично работает !! Невозможно понять, почему та же функция на /
не работает на конечных точках Google Cloud (хотя работает локально!)