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


How to make a Website and API REST with Laravel with the same Controllers?

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

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

http://myproject.com/userRegister/

然后网页显示给我一个视图HTML表单用户注册,但如果我调用这样的请求:

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

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

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

你知道最好的方法是什么吗?我研究了一下,有些人建议用JSON响应来做所有的服务,用AngularJS或类似的东西来解析,但我不想那样,我只想用Laravel和HTML。

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

不要忘记让你的控制器尽可能瘦,并把你的大部分逻辑转移到模型、服务和存储库中。这将帮助你有两个独立的控制器版本,将有尽可能少的代码。

但是如果你仍然想把它们组合起来,你可以使用'Request::acceptsJson() 'Request::acceptsHtml()方法来确定你有什么类型的请求