我正在尝试开发一个使用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(如果重要的话)。
答案 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中构建的静态网站提供服务。