Laravel返回json或视图

时间:2013-08-21 11:26:25

标签: json api laravel laravel-4

我正在开发一个API,如果用户指定.json作为后缀(例如admin/users.json)的操作,他们会在json的返回时获得响应,否则他们会得到一个常规的html图。

某些操作可能没有json响应,在这种情况下,它们只会返回一个html视图。

有没有人就如何干净利落地提出建议?我希望通过路由可以实现。

2 个答案:

答案 0 :(得分:4)

我建议您将应用程序创建为api。

Foreach页面,您需要两个控制器。每个控制器使用不同的路由(在您的情况下,一个路由以.json结尾,一个路由不以)。

json控制器以json格式返回数据。 “普通”控制器调用相应的json路由,反序列化json,然后将生成的数组传递给视图。

通过这种方式,您可以获得标准化的api(并且可以维护,因为您自己的应用程序使用它),以及“普通”网站。

更多信息: Consuming my own Laravel API

编辑:也许它可以使用过滤器,但我不确定,我现在没有时间自己尝试。

答案 1 :(得分:2)

在Laravel 5.x中,要实现发送AJAX或JSON请求数据以及以其他方式返回其他人的视图模板等功能,您所要做的就是检查$ request-> ajax()或$ request-> isJson()。

public function controllerMethod(Request $request)
{
   if ($request->ajax() || $request->isJson()) {
      //Get data from your Model or whatever
      return $data;
   } else {
      return view('myView.index');
   }
}