Laravel 控制器不输出真实内容 JSON

Laravel controller not outputting content as real JSON

我的 Laravel 应用程序中有以下控制器:

class ProjectController extends Controller {
    ...
    public function index() {
        $projects = Project::where('is_completed', false)
            ->orderBy('created_at', 'desc')
            ->withCount(['tasks' => function ($query) {
                $query->where('is_completed', false);
            }])->get();
        return $projects->toJson(JSON_PRETTY_PRINT);
    }
    ...
}

被以下路由引用:

Route::get('projects', 'ProjectController@index');

我的问题是当我去 url:

https://127.0.0.1/api/projects

然后我得到了预期的结果,但内容类型不是 JSON,如下所示(它是 HTML):

关于如何将内容输出为真实 JSON 内容有什么想法吗?

谢谢!

而不是:

$projects = Project::where('is_completed', false)
    ->orderBy('created_at', 'desc')
    ->withCount(['tasks' => function ($query) {
        $query->where('is_completed', false);
    }])->get();
return $projects->toJson(JSON_PRETTY_PRINT);

你应该使用:

return response()->json(Project::where('is_completed', false)
    ->orderBy('created_at', 'desc')
    ->withCount(['tasks' => function ($query) {
        $query->where('is_completed', false);
    }])->get());

看看 Json response in documentation

的例子