从相同的域/子域组合运行网站和API的正确方法是什么

时间:2018-08-03 18:20:08

标签: laravel laravel-5

我只是从Laravel开始,所以有可能我没有阅读过一些文档,这些文档强调了这种可能性,但这是必要条件。

我有一个网站,我们称它为https://www.foo.com,向其访问者提供HTML。

https://api.foo.com的子域应该提供RESTful API。

我在GoDaddy托管上,如果创建了子域,则文件结构将如下所示:

root/ 
├── website_code/  <- https://www.foo.com
├── ...
├── 
├── api/ <- https://api.foo.com
│   ├── ...
│   ├── 
│   └── ...
└── ...

两者都将访问相同的数据库,并且将提供相同的信息,只是它们的格式将不同。该API不需要视图,而HTML版本则将获取的值注入视图中。

使用Laravel实现这一目标的最佳方法是什么,请牢记:

  • API计划使用Passport支持OAuth2和密码授予类型身份验证
  • 该API将来可能会看到多个不同的版本更改,默认情况下不会选择任何版本

我应该在每个文件夹下运行两个不同的Laravel实例吗?
还是应该使用类似acceptsJSON()的方法来确定Accept:标头是否已设置为JSON,并将其视为API请求。

对于SEO来说,维护api.foo.com很重要,但是如果没有简便的方法,我也可以看看https://www.foo.com/api/格式。

请提出建议。

1 个答案:

答案 0 :(得分:1)

这完全取决于您的需要。我希望有两个项目。假设将来您的网站需要成为一个页面应用程序,那么您必须有两个不同的项目。我在类似的情况下工作,其中Listener and Client interfaces 是基于vue.js构建的单页应用程序,我们使用Sheba.xyz 所有与数据相关的作品。再说一遍,这完全取决于您的需要。您需要考虑当前和将来的所有需求,并考虑哪种方法更适合您。