【问题标题】:Is there wildcard for HTTP request routes on DigitalOcean App platformDigitalOcean App平台上的HTTP请求路由是否有通配符
【发布时间】:2022-08-09 17:50:45
【问题描述】:
我有一个我已经构建并部署到 DigitalOcean App 平台的反应应用程序。我想知道是否有可以用于 http 请求路由的通配符。我可以为子目录设置路径,但我不知道如何为具有帖子 ID 的子目录设置路径。
例如:
mywebsite.com/subdirectory -> 有效,我可以访问此页面
mywebsite.com/subdirectory/12345 -> 当我在子目录后添加 ID 时,这不起作用。
是否有通配符或可用于访问具有子目录和 ID 的特定页面的东西。
谢谢
标签:
reactjs
http
digital-ocean
digital-ocean-apps
【解决方案1】:
直接回答您的问题:不,DO 似乎不直接支持通配符(至少目前还不支持)。在 React 应用程序中直接使用通配符并不是一种常见的设计。通常你有一个索引页面和一个浏览器内路由器或各种后端路由器。
如果是这种情况并且您有一个浏览器路由器,这意味着您实际上并没有多个页面,您只有一个 index.html,因此您只需将 Catchall 设置为index.html。任何子页面都将被重定向到该页面,然后您的浏览器路由器将呈现适当的组件等。有关说明,请参阅DigitalOcean Web-Site。
第二种情况是您确实需要一个复杂的路由,它将在您需要的地方加载不同的 HTML 文件。在这种情况下,最好部署在具有 nginx 前端之类的容器中。
在这种情况下,您将拥有一个看起来像这样的 Dockerfile:
FROM node:16.16.0 as dep_builder
COPY package.json ./
RUN npm i
FROM node:16.16.0 as builder
COPY . .
COPY --from=dep_builder node_modules ./node_modules
CMD npm run build
FROM nginx:alpine
EXPOSE 80
COPY --from=builder build /usr/share/nginx/html
并使用 Dockerfile 将其部署为服务。有关如何部署 docker 容器的详细说明,请参阅 DO 的站点。 (Link to Digital Ocean Docs)