rest - 带有路径的 OpenShift 路由导致忽略子路由
问题描述
我目前正在使用 OpenShift 部署 node.js-Application。此应用程序公开了一个 REST api。
只要我不在 Openshift 中使用路径并且路径类似于
www.app.host.com
API 工作正常。现在我想在一台主机上托管多个应用程序,因为我不想在每次添加新应用程序时都提出证书签名请求。但是当我在 OpenShift 路由中使用路径时
www.host.com/app/
所有流量都将发送到应用程序根路由。所以
www.host.com/app/request/something
仍然会导致流量最终出现在欢迎页面上。您对如何让 OpenShift 仍然接受子路由有任何想法吗?
解决方案
好的,这就是你必须做的。您必须将路径包含到 node.js 应用程序中。
因此,如果您使用的是 /yourapp/ (请务必在末尾包含斜杠),您必须将路线从
/api/ dosomething到/yourapp/api/dosomething
在我的情况下,我使用了一个环境变量,因为我不想将路径硬编码到我的应用程序中。所以现在它基本上看起来像这样
var requestPath = (process.env.ROUTE_PATH || '') + '/request';
var authPath = (process.env.ROUTE_PATH || '') + '/auth';
app.use(requestPath, routesRequest);
app.use(authPath, routesAuth);
之后,只需将部署中的 ROUTE_PATH 环境变量设置为/yourapp即可
推荐阅读
- typescript - TypeScript 函数,其参数应接受两种类型之一
- python - 使用 Python 实现机器精度跨平台
- html - 是否存在与“浮动显示”的 nroff / troff 概念等效的 HTML 和/或 CSS?
- java - 将 Java 对象插入 MongoDB,并将日期值作为字符串插入
- javascript - 根据范围滑块值以百分比设置表格网格的宽度
- python-3.x - Python Bokeh - 条件表格式 + 过滤框
- visual-studio - 如何在 Visual Studio 上使用新的深色主题
- arrays - VB.NET 表单数组
- python - TypeError:timedelta 秒组件不支持的类型:列表
- kubernetes - kube-proxy daemonset 权限问题