9

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

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

有没有人有关于如何干净地实施的建议?我希望它可以通过路由来实现。

4

2 回答 2

5

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

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

json 控制器以 json 形式返回数据。“正常”控制器调用相应的 json 路由,反序列化 json,然后将结果数组传递给视图。

这样,您就有了一个可用的标准化 api(并得到维护,因为您自己的应用程序使用它),以及一个“正常”的网站。

更多信息: 使用我自己的 Laravel API

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

于 2013-08-21T13:45:33.007 回答
3

在 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');
   }
}
于 2017-07-11T16:46:37.640 回答