Yii2 BackOffice与API REST实现

时间:2015-08-04 01:53:30

标签: angularjs rest yii2 frontend backend

我在Yii2开发了一个应用程序,作为旅行社的后台。

我使用了基本的开始模板,并使用gii(代码生成器)为模型创建了CRUDS(酒店,酒店客房,酒店图像等)

我还想创建两个不同的前端应用程序(一个用于零售,另一个用于其他代理),我想将它与后端(可能是angular.js应用程序)分开并通过REST获取信息可能是一个很好的方法。

所以我想根据用gii制作的模型使用API​​ Rest。

我怎样才能做到这一点? 我读过这个: http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html

并且它说我必须切换控制器。

目前我有(用gii生成)

类HotelController扩展Controller

并阅读指南,说我必须使用

类HotelController扩展了ActiveController

但如果我进行此更改,后台将不再起作用。

最好的方法是什么?

使扩展ActiveController的另一个 APIHotelController?

我可以合并(以某种方式)与gii生成的控制器?

实现这种层分离的任何其他方式(后端)?

谢谢!

1 个答案:

答案 0 :(得分:0)

到目前为止,我知道构建REST API Yii2 Web应用程序而不会弄乱现有代码或路由配置的最优雅的解决方案是将REST API构建为包含MVC元素的单独子应用程序,这意味着在Yii的世界中:作为module

您已有一个可在web文件夹中访问的工作代码,它在index.php文件中拥有自己的Entry Scripts,它自己的服务器配置({{1 }}文件,如果使用 apache )及其应用程序将依赖的.htaccess文件夹中的自己的应用配置,然后再解析您的网址并呈现您的视图相关configcontrollers内的文件。

所以我们的想法是创建一个新的models文件夹,让我们称之为web,使用自己的Entry Scripts文件,自己的服务器配置,自己的api文件夹并拥有config扩展ActiveController类。

然后,您的controllers应用和web服务都将共享相同的api文件,以验证,存储或检索数据。

您的应用将从此基本模板结构移动:

models

到这个新结构(来自下面链接的教程):

+ assets
+ config
+ controllers
+ models
+ views
+ web
...

然后,您需要将+ web + config + controllers ... + api + config + modules + v1 + controllers .htaccess index.php 服务注册为单独的模块,以便Yii工作和初始化。

然后,您将在{{{{{{ 1}}或api url结构取决于您的网络和API配置)。

为了实现必要的代码,这里有一个很棒的step by step tutorial。它使用基本模板结构并遵循yii的api versionning方法( web文件夹)。