Laravel 响应:中间件实现返回 JSON 响应
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class JsonResponseMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$response = $next($request);
// 检查请求头是否包含 X-Json-Response 并且值为 true
if ($request->headers->has('X-Json-Response') && $request->headers->get('X-Json-Response') === 'true') {
// 将响应内容转换为 JSON 格式
$response->setContent($response->getContent()->toJson());
// 设置响应头 Content-Type 为 application/json
$response->headers->set('Content-Type', 'application/json');
}
return $response;
}
}
这段代码定义了一个名为 JsonResponseMiddleware
的中间件,它会检查请求头中是否有 X-Json-Response
这个字段,并且其值是否为 true
。如果满足条件,中间件会将响应内容转换为 JSON 格式,并设置正确的 Content-Type
响应头。这样,在 Laravel 应用中就可以通过这个中间件全局地为特定的请求返回 JSON 格式的响应。
评论已关闭