正在制作新的仓库。经过研究后,我决定根据API Resources最佳做法使用jsonapi.org来标准化我的API响应。
我无法以最佳方式返回一致的用户可读的error messages(不是例外)。这些是可能直接从控制器返回的消息。使用Laravel的API资源,我已经能够创建类似这样的东西,但是感觉很棘手。
$error = (object) (['errorCode' => 422, "messageDetail" => ["First name must contain at least three characters."]]);
return new ErrorResource($error);
ErrorResource
在这种情况下用于格式化JSON。这种想法是,每当开发人员想要编写错误消息时,他们都将使用ErrorResource
。
有更好的方法吗?
对我来说,最好在app / Exceptions / Handler.php:render中进行错误格式设置。
这是一种更灵活的方法,可在一处完成。
在App/Exceptions/Handler.php
内部,您可以根据需要更改渲染功能,并从该功能返回资源。这是一个例子
public function render($request, Exception $exception)
{
if ($request->is('api/*') || $request->expectsJson() || $request->is('webhook/*')) {
$error = (object) (['errorCode' => 422, "messageDetail" => ["First name must contain at least three characters."]]);
return new ErrorResource($error);
}
return parent::render($request, $exception);
}