Laravel 响应:永远返回 JSON 响应
在 Laravel 中,你可以通过中间件或响应辅助函数来确保所有响应都是 JSON 格式。以下是一个简单的中间件示例,它将确保所有响应都转换为 JSON:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class ForceJsonResponse
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$response = $next($request);
// 确保返回的内容是字符串或数组,然后将其转换为 JSON 响应
if (!$response instanceof \Illuminate\Http\JsonResponse) {
$data = $response->getData();
$response->setData(is_array($data) ? $data : ['data' => $data]);
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'application/json');
}
return $response;
}
}
然后,你需要注册这个中间件。在 app/Http/Kernel.php
文件的 $middleware
属性中添加:
protected $middleware = [
// ...
\App\Http\Middleware\ForceJsonResponse::class,
];
现在,每次响应都会被自动转换为 JSON 格式。这样,无论控制器返回什么类型的响应,它都会被转换为 JSON 格式。
评论已关闭