Я добавил новый необязательный параметр в маршрут в моей службе Express. Все работает локально, однако при развертывании в Google App Engine мой сервис возвращает not found, если указан необязательный параметр.
Запуск основного сервера:
const indexRouter: express.Router = cradle.indexRouter; // from dependency injection
const server = express();
server.disable("x-powered-by");
server.use(responseTime(responseTimeLogger(logger)));
const port = process.env.PORT || 3000;
server.listen(port, () => {
logger.info(`Express server has started on port ${port}`);
server.use("/api/v1/", indexRouter);
resolve();
});
cradle.indexRouter
-> createIndexRouter
:
function createIndexRouter(services: IIndexRouterArgs) {
const indexRouter = Router();
indexRouter.use("/weather", services.weatherRouter);
indexRouter.use("/health", services.healthRouter);
indexRouter.use("*", notFoundMiddleware);
return indexRouter;
}
services.weatherRouter
-> createWeatherRouter
:
function createWeatherRouter(services: IWeatherRouterArgs) {
const weatherRouter = Router();
weatherRouter.get(
"/:latitude/:longitude/:postalCode?",
services.weatherController.reportWeather
);
return weatherRouter;
}
При запросе https://{service}.com/api/v1/weather/50/50/10001
я ожидаю нажатия services.weatherController.reportWeather
, но вместо этого меня перенаправляют на notFoundMiddleware
из-за параметра 10001 (postalCode). Удаление его возвращает успешный ответ.