Laravel Lumen 确保 JSON 响应
我是Laravel和Lumen的新手。我想确保我总是只得到一个JSON对象作为输出。如何在Lumen中执行此操作?
我可以使用 .但是当错误发生时,API会给我错误。但我只想要回应。response()->json($response);
text/html
application/json
提前致谢。
我是Laravel和Lumen的新手。我想确保我总是只得到一个JSON对象作为输出。如何在Lumen中执行此操作?
我可以使用 .但是当错误发生时,API会给我错误。但我只想要回应。response()->json($response);
text/html
application/json
提前致谢。
您需要调整异常处理程序 () 以返回所需的响应。app/Exceptions/Handler.php
这是一个非常基本的例子,说明可以做些什么。
public function render($request, Exception $e)
{
$rendered = parent::render($request, $e);
return response()->json([
'error' => [
'code' => $rendered->getStatusCode(),
'message' => $e->getMessage(),
]
], $rendered->getStatusCode());
}
基于@Wader答案的更准确的解决方案可以是:
use Illuminate\Http\JsonResponse;
public function render($request, Exception $e)
{
$parentRender = parent::render($request, $e);
// if parent returns a JsonResponse
// for example in case of a ValidationException
if ($parentRender instanceof JsonResponse)
{
return $parentRender;
}
return new JsonResponse([
'message' => $e instanceof HttpException
? $e->getMessage()
: 'Server Error',
], $parentRender->status());
}