在 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 格式。