编程

Laravel 中使用 GraphQL : LightHouse (1)

1526 2021-12-20 09:59:38

安装

composer require nuwave/lighthouse

发布默认schema

php artisan vendor:publish --tag=lighthouse-schema

Lumen

bootstrap/app.php 中注册服务提供者:

$app->register(\Nuwave\Lighthouse\LighthouseServiceProvider::class);

Lighthouse 通过多个服务提供者(service providers)提供许多特性。由于 Lumen 不支持自动发现,需要手动去单独注册你所需要特性。查看composer.json,,extra.laravel.provider 区域包含了默认的服务提供者。
IDE 支持 

Lighthouse 重度使用了 SDL 和 schema 语法检测。想要改进你的编辑体验,可以使用 artisan 生成定义文件:

php artisan lighthouse:ide-helper

安装 GraphQL 调试工具

建议安装 GraphQL Playground.

composer require mll-lab/laravel-graphql-playground

安装后, 可查看  /graphql-playground 进行尝试.

你可以使用任何一个 GraphQL 客户端, 确保其指向配置文件定义的 URL。默认是  /graphql.

配置

Lighthourse 默认配置开箱即用,通过以下命令发布配置文件:

php artisan vendor:publish --tag=lighthouse-config

默认配置文件位于 config/lighthouse.php

CORS

GraphQL API 可以被多个客户端消费,这些客户端可以跟服务器同域名,也可以不同域。可以在 config/cors.php 中配置启用 CORS :

return [
-   'paths' => ['api/*', 'sanctum/csrf-cookie'],
+   'paths' => ['api/*', 'graphql', 'sanctum/csrf-cookie'],
    ...
];