[英]Laravel API Errors and Exceptions: How to Return Responses
状态码 含义 404 未找到(页面或其他资源不存在) 401 未授权(未登录) 403 已登录但禁止访问请求的区域 400 错误请求(URL 或参数有问题) 422 无法处理的实体(验证失败)500 一般服务器错误
不完全确定您想要什么,但您可以使用JSON 响应使用自定义状态代码制作自己的自定义JSON response()
return response()->json(['error' => 'Page not found'], 404);
我相信你想要一些动态的东西,比如 200 表示成功的路线,201 表示成功的请求,422 表示失败的验证等等。 将此添加到您的 controller
use Symfony\Component\HttpFoundation\Response;
您的删除方法现在应该如下所示
public function destroy(Job $job)
{
//I'm applying model binding
$job->delete();
return response([], Response::HTTP_NO_CONTENT);
}
你的更新方法应该是这样的
public function update(Job $job)
{
//I'm using model binding and a resource in my case
$job->update($this->validateRequest());
return (new JobResource($job))
->response()
->setStatusCode(Response::HTTP_OK);
}
你的 store 方法应该是这样的
public function store(Request $request)
{
//I've used a Resource on my Job model
$job = Job::create($this->validateRequest());
return (new JobResource($job))
->response()
->setStatusCode(Response::HTTP_CREATED);
}
这是一个示例验证请求
private function validateRequest()
{
return request()->validate([
'title'=> 'required|unique:jobs',
'comment' => 'sometimes'
]);
}
您可以发送 json 格式的响应:
return response()->json(['error' => 'Page not found'], 404);
如果您还想显示自定义消息。 只需从以下位置添加此 function: vendor\laravel\framework\src\Illuminate\Foundation
。 您不需要添加或需要额外的文件。
abort(403, 'Unauthorized action.');
在您喜欢的任何条件下:
if ( !hasRole('admin') ) {
abort(403, 'Unauthorized action.');
}
这是 function:
> public function abort($code, $message = '', array $headers = [])
> {
> if ($code == 404) {
> throw new NotFoundHttpException($message);
> }
>
> throw new HttpException($code, $message, null, $headers);
> }
这将显示一条一般消息,如果您想自定义页面,只需在resources/view
中添加一个文件夹,名称为“错误”,在里面添加您的视图,错误名称为:404、403 等。错误数您在 function 中调用,将显示视图名称 laravel。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.