如何使用具有相同控制器的 Laravel 制作网站和 API REST?

Rob*_*les 5 php rest routing web-applications laravel

我是 Laravel 框架的新手,我想开发一个也有自己的 API Rest 的 Web 应用程序,但我不知道哪种方法最好。

我希望控制器和方法对于 Web 操作和 API REST 操作可以是相同的,例如,如果我发出这样的请求,则对于用户模块:

http://myproject.com/userRegister/

然后网络向我展示了一个带有用户注册表单的视图 HTML,但是如果我调用这样的请求:

http://myproject.com/api/userRegister/

然后响应将是一个带有我需要注册用户的表单数据的 JSON。

我希望他们都使用 UserRegisterController 和相同的方法,例如:“formRegister”,所有这些都是为了避免在不同的方法中重复业务逻辑。

知道什么是最好的方法吗?我进行了研究,有些人建议使用 JSON 响应制作所有服务并使用 AngularJS 或类似工具进行解析,但我不想要那样,我只想将 Laravel 与 HTML 一起使用。

Max*_*nin 4

让相同的控制器处理 api 和 web 请求并不是最好的决定。这种逻辑迟早会导致代码混乱。

不要忘记让控制器尽可能精简,并将大部分逻辑移至模型、服务和存储库。这将帮助您拥有两个独立的控制器版本,并且代码尽可能少。

但如果您仍然想将它们组合起来,您可以使用\Request::acceptsJson() \Request::acceptsHtml()方法来确定您的请求类型。

  • 但将它们分开会导致过多的冗余代码 (3认同)