Php API的Laravel错误处理
Php API的Laravel错误处理,php,laravel,rest,laravel-5,Php,Laravel,Rest,Laravel 5,我正在用Laravel 5.5构建一个web app+REST服务器,这样用户既可以通过web界面在线访问服务,也可以通过移动应用间接使用API 现在的目标是让相同的控制器能够处理API和直接请求,利用Laravel内置的双路由和FormRequests的自动JSON响应。 我想的主要问题是: 如何在同一控制器函数上处理JSON(用于API访问)和HTML视图(用于web访问者)响应 如何管理控制器中的“未找到资源”错误,并随后以所需的方式回复用户 解决第二个问题的一种可能方法是使用“find
我正在用Laravel 5.5构建一个web app+REST服务器,这样用户既可以通过web界面在线访问服务,也可以通过移动应用间接使用API 现在的目标是让相同的控制器能够处理API和直接请求,利用Laravel内置的双路由和FormRequests的自动JSON响应。
我想的主要问题是:
class UsersController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = User::all();
return UserResource::collection($users);
}
/**
* Store a newly created resource in storage.
*
* @param \Washery\Http\Request\StoreUser $request
* @return \Illuminate\Http\Response
*/
public function store(StoreUser $request)
{
User::create($request->all());
return response()->json(['message' => 'success'], 200);
}
/**
* Display the specified resource.
*
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$user = User::find($id);
return new UserResource($user);
}
/**
* Update the specified resource in storage.
*
* @param \Washery\Http\Request\UpdateUser $request
* @return \Illuminate\Http\Response
*/
public function update(UpdateUser $request)
{
User::update($request->all());
return response()->json(['message' => 'success'], 200);
}
/**
* Remove the specified resource from storage.
*
* @param \Washery\User $user
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
User::find($id)->delete();
return response()->json(['message' => 'success'], 200);
}
}
一种方法是知道请求来自哪里。如果它来自移动设备(API请求),则返回JSON,否则返回视图
if ($request->expectsJson()) {
return response()->json(['message' => 'success']); // No need to put 200 here.
} else {
return view('view.path');
}
您可以在此处了解有关请求api的更多信息:那么错误呢?我是否应该使用相同的方法并覆盖异常处理程序中的“render”方法,以便通过mobile Laravel调用时将错误显示为JSON?我建议这样做。因为你不能用JSON重定向。它将始终返回404.blade.php的内容。要使其正常工作,您需要在
api.php
中使用另一条路径来期望json响应,该路径指向相同的方法@Washery