我有一个带有控制器的 RESTful API,当它被我的 android 应用程序击中时应该返回一个 JSON 响应,当它被网络浏览器击中时应该返回一个“视图”。我什至不确定我是否以正确的方式处理这个问题。我正在使用 Laravel,这就是我的控制器的样子
class TablesController extends BaseController {
public function index()
{
$tables = Table::all();
return Response::json($tables);
}
}
我需要这样的东西
class TablesController extends BaseController {
public function index()
{
$tables = Table::all();
if(beingCalledFromWebBrowser){
return View::make('table.index')->with('tables', $tables);
}else{ //Android
return Response::json($tables);
}
}
看看反应如何彼此不同?
原文由 frankelot 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以像这样使用
Request::wantsJson()
:基本上
Request::wantsJson()
所做的是检查请求中的accept
标头是否为application/json
并根据该结果返回 true 或 false这意味着您需要确保您的客户端也发送一个“accept: application/json”标头。请注意,我在这里的回答并不能确定“请求是否来自 REST API”,而是检测客户端是否请求 JSON 响应。不过,我的回答应该仍然是这样做的方式,因为使用 REST API 并不一定意味着需要 JSON 响应。 REST API 可能会返回 XML、HTML 等。
参考 Laravel 的 Illuminate\Http\Request :