如何将Strapi API和管理面板与另一个节点应用程序(使用Strapi API)集成?

时间:2019-06-19 06:52:53

标签: node.js heroku strapi

我正在尝试开发一个使用Strapi Admin Panel API生成的应用程序,同时将其用作使用该API的网站。

因此,基本上,我正在尝试建立一个网站:

  • 其中/api将服务器路由为Strapi API端点

  • 其中/admin路由用作创建API的Strapi管理面板

  • 配置了所有其他路由以服务我的网站的地方,即:

    • /路线是我网站的着陆页

    • /contacts是联系人页面

    • 等。

  • 此外,网站的静态文件(html / css / etc)应该由分别使用生成的API(服务器端)的服务器提供。


我希望我不要太含糊地表达自己。

本质上,我需要将一个node.js应用程序(我的网站)与另一个node.js应用程序(Strapi)集成在一起,以使它们 作为一个人无缝地协同工作


有人知道如何实现吗?


我在这里已经阅读了关于Stackoverflow和Strapi GitHub问题的一些答案,有人说,实现这一目标的方法是在不同的端口上运行两个单独的应用程序,但这对我来说不合适(或者也许对我来说不合适)我只是不了解一些基本知识。

我需要制作一个应用程序,该应用程序基本上是一个简单的多页网站,但使用Strapi的api生成工具进行了增强。


我已经启动并运行了Strapi应用程序,我想也许应该在应用程序文件夹结构中找到一些位置放置我的网站(即,所有静态内容都放在public文件夹中),但是应该在哪里放置服务器端的东西?

我将需要使用模板引擎,因此再次出现“将客户端文件放在哪里”的问题。我越深入研究代码,就会越困惑。


PS:我很好用Koa,它用作Strapi的服务器。

PPS:此外,我计划在单个Dyno上将应用程序部署到Heroku(如果重要的话)。

2 个答案:

答案 0 :(得分:2)

好的,我只是使用路由前缀,这是我建议您的解决方案。

因此,您将必须构建自己的网站应用程序。并将构建内容推送到Strapi应用程序的./public文件夹中。

然后,在您的api/.../config/routes.json文件中,您必须在每个路由的prefix键和所有API中添加一个选项config

{
  "routes": [
    {
      "method": "POST",
      "path": "/restaurants",
      "handler": "Restaurant.create",
      "config": {
        "policies": [],
        "prefix": "/api"
      }
    }
  ]
}
  • 因此,最后您将在/admin上拥有管理员
  • /api为前缀的API端点
  • 还有您在/上的网站/资产

答案 1 :(得分:0)

我发现自己处于类似情况。在我的情况下,我想在一个服务器实例中同时部署Strapi和一个静态站点(在我的情况下是使用Gatsby构建),至少要尝试尝试。

原始帖子中还有一些悬而未决的问题,所以让我根据自己的情况进行回答:

首先,是可能的。但是每个应用程序都必须在各自的端口上运行。这样,您的服务器会根据请求知道要服务的服务器。尝试将它们混合到一个端口中会使两个应用程序混乱。

在我的情况下,我最终要做的是让Strapi在端口1337中运行并在端口80中提供我的静态页面。为了实现这一点,我使用NGINX来提供内容并充当代理。我首先尝试将它们放在同一个域中,但遇到了很多冲突。因此,我强烈建议使用子域。所以我最终像这样:

  • domain.com投放我的静态页面
  • api.domain.com服务Strapi

您可以在NGINX中拥有配置文件,例如:

server {
    server_name domain.com www.domain.com;
    root /var/www/domain.com/html;
}

server {
    server_name api.domain.com
    location / {
         proxy_pass http://127.0.0.1:1337;
         proxy_http_version 1.1;
    }
}

如您所见,您将需要执行许多配置,因此,我不建议您在Heroku中尝试这种配置,因为您实际上对Dyno的控制并不多(端口,路由等) 。如果要使用Heroku,则每个应用程序都应有一个单独的Dyno。一个用于Strapi,另一个用于另一个应用程序。

我强烈建议您使用DigitalOcean之类的工具,或者在Digital Ocean中可以完全控制服务器的任何其他工具(称为Droplet)。我能够在同一Droplet上安装Strapi实例,并为我在Gatsby中构建的静态网站提供服务。