Laravel:将REST控制器与普通控制器和视图相结合


Laravel: Combine REST-Controllers with normal controllers and views?

我想创建一个新的应用程序,为此我选择了laravel。所以我也是拉拉威尔的新手。

我想从一开始就为浏览器插件或移动应用程序集成API。当然,我不想让它成为一个API应用程序。我仍然需要正常的视图和控制器来处理这个问题。现在我对正确的结构有点困惑。当它是API请求时,它应该将数据输出为JSON,否则输出为正常视图。

实现这一目标的最佳方式是什么?所有教程都是基于API的应用程序,这对我没有帮助。

制作UserController.php和ApiUserControllerphp是一种好的做法吗?或者UserController.php和像API/v1.0/UserController.php这样的子文件夹结构?我不是经常用这种结构来重复吗?我的意思是,通常唯一改变的是输出,不是吗?

提前感谢!

您的API应该在API路由上提供服务,这些路由可以与其他用户的东西在同一个控制器中,但它们实际上不必。

我喜欢使用ApiController,其中包含所有API函数。这样你就可以实现"showUsers"之类的东西,并让它返回User::all()或User::pagite(50)。如果您直接在Laravel中返回一个Model,它将默认输出为JSON,这非常方便。

现在,对于一些真正的API的好处,我喜欢将dingo的API包与artdarek的Laravel OAuth 2包装器结合使用。它提供了真正高质量、安全的API,具有许多功能,如速率限制和范围以及所有很酷的东西。

  • Dingo的API软件包
  • Artdarek的Laravel OAuth包装

您真的不想为API使用RESTful控制器,因为您可能想要不同名称的端点。例如,我喜欢将所有用户都保留在api/users,而将单个用户保留在user/user。这正是我所喜欢的,我认为我的API应该是完全可定制和可路由的。