Jam*_*ett 3 rest laravel axios laravel-api
我创建了一个基本的 Laravel REST API,它将为一些使用 axios 发出请求的 JavaScript 应用程序提供服务。
我的应用程序使用基本控制器来确保所有响应都以相同的格式发送:
class BaseController extends Controller
{
/**
* success response method.
*
* @param $result
* @param $message
*
* @return JsonResponse
*/
public function sendResponse($result, $message)
{
$response = [
'success' => true,
'data' => $result,
'message' => $message,
];
return response()->json($response, 200);
}
/**
* return error response.
*
* @param $error
* @param array $errorMessages
* @param int $code
*
* @return JsonResponse
*/
public function sendError($error, $errorMessages = [], $code = 200)
{
$response = [
'success' => false,
'message' => $error,
];
if (!empty($errorMessages)) {
$response['data'] = $errorMessages;
}
return response()->json($response, $code);
}
}
Run Code Online (Sandbox Code Playgroud)
当我从 API URL 检索响应并将其记录到控制台时,我得到以下输出:
目前,我的响应对象包含它自己的数据对象,然后该数据对象包含另一个数据对象。因此,要访问数据,我必须使用response.data.data。
我想知道这是否真的是正确的方法。由于response.data.data的命名约定似乎不是一个非常干净的方法来做到这一点。我在网上看到了一些指南,其中是这样完成的,但我想知道是否有我遗漏的通常遵循的约定。也许这是正确的,但我只是想从更有经验的程序员那里得到一些见解。
在我看来,你的处理方式很好:
response是通过 axios 的完整响应对象response.data是返回的完整响应正文response.data.data是data返回的响应体的节点一些建议:
success在响应中使用,可以从返回的状态代码中暗示:200-299 内的任何内容都是成功,300-399 的任何内容都是重定向,400-499 的任何内容都是客户端错误,500+ 的任何内容都是服务器错误(看这里)data在错误的情况下使用,而errors应该使用诸如sendError方法应默认为状态代码500而不是200,就像200成功的状态代码一样