如何在开发区运行Angular2(前端)和Symfony3(后端API)?

这是我的第一个问题。 我已经花了几个小时阅读主题,但从未发表过一个问题。

在这一刻,我正在开发一个Angular4应用程序。 我正在运行我的应用程序与“ng build – watch”和一个本地PHP web服务器指向我的angular应用程序的“dist”文件夹。 (当使用内置的liveload服务器'ng serve'时,没有可用的PHP服务器,所以我用'ng build –watch'和PHPStorm的一个本地PHP内置服务器来解决这个问题)

为了与我的MYSQL数据库进行通信,我在一个名为'/ api'的目录下使用了单个php文件。 我在angular-cli.json文件中将这个文件夹添加到了我的资源中,所以当运行本地应用程序时,API文件夹也被推送到“dist”文件夹。

在这种情况下,我能够使用相对path指向我的http请求。 (像POST动作到'/api/insert.php')。 所以当发布我的应用程序,没有必要修改我的HTTP请求的path。

但是现在我想要使用后端框架,经过一番研究,我发现http://api-platform.com是一个在Symfony3上构build的PHP框架。 当我运行这个API时,例如在localhost:8000上运行,而我的angular度应用在localhost:4200上运行。

所以,这意味着我将不得不为我的HTTP请求使用绝对path。 (eq http:// localhost:8000 / api / insert.php而不是/api/insert.php)。

目前我有两个项目:一个前端和一个后端。 为了使开发更快,更简单,更简单,我想把这两个项目放在一起。 我知道一些开发人员不喜欢这种架构,但在我的情况下,这是最好的解决scheme,一个项目,包括前端和后端。

具体来说:是否有可能在同一时间,相同的域和相同的端口上运行一个debuggingWeb服务器在开发区域与我的本地主机上运行的angular应用程序和我的本地主机/ API上的symfony3 / api平台?

我想保持这个项目文件夹结构保持干净: – projectname(root)— frontend —–(所有目录/文件从angular度)—后端—–(所有目录从API -platform / symfony3)

此致

着陆器

我结束了使用另一个后端。 在我的情况下,nodeJS服务器是最好的,最快速和最简单的解决方案。

在同一个域(f.ex. localhost)上运行这两个应用程序没有问题,但是它们需要在不同的端口上运行。 在你的情况下,角是在4200上运行的,而你的PHP应用程序是在8000上运行的。你可以用一个代理来配置角,这个代理将http:// localhost:4200 / api的请求传递给http:// localhost:8000 / api

在您的角根目录( package.json所在的目录)中,创建一个文件proxy.conf.json

 { "/api": { "target": "http://localhost:8000", "secure": false } } 

然后改变你的package.json使用这个代理:

 "scripts": { "ng": "ng", "start": "ng serve --proxy-config proxy.conf.json", // other scripts } 

现在使用npm start而不是ng serve来运行webpack服务器

就个人而言,我会忽略proxy.conf.json ,因为有些同事在不同的端口上运行他们的后端。 所以我们在git中用上面的内容创建了一个proxy.conf.dist.json 。 如果你想使用不同的端口,你可以复制它并改变端口,而那些想要使用默认端口的端口可以简单地符号链接到它。