使用Lighthouse-PHP构建的Laravel Graphql服务器
大家好,最近一直失踪了,很抱歉,因为工作很忙,找不到时间更新博客。
大家好,很抱歉最近消失了,但是工作很忙,没有时间更新博客。
我们开始吧。
使用Docker容器安装Laravel。
使用Docker容器安装Laravel
使用Docker创建Laravel项目
进行初期移行
运行初始迁移
sudo docker-compose exec app-server php artisan migrate
安装 Lighthouse PHP
安装lighthouse-php
安装lighthouse-php
docker run --rm -v $(pwd):/app composer require nuwave/lighthouse
发布GraphQL的默认模式
发布GraphQL的默认模式
sudo docker-compose exec app-server php artisan vendor:publish --provider="Nuwave\Lighthouse\LighthouseServiceProvider" --tag=schema
在app服务器上,请确保没有忘记更改用于docker-compose文件的名称。
在应用服务器端,请记得根据你在docker-compose文件中使用的名称进行更改。
安装 Graphql Playground
以下的步骤是可选的,但推荐安装graphql-playground。
下一步是可选的,但建议安装graphql-playground。
docker run --rm -v $(pwd):/app composer require mll-lab/laravel-graphql-playground
游乐场的网址是http://localhost/graphql-playground。
游乐场的网址是http://localhost/graphql-playground。
构成
再次运行容器,并执行 docker-compose up –build。
将GraphQL的默认设置导出
再次运行容器,使用docker-compose up –build命令。
导出GraphQL的默认配置
docker-compose exec app-server php artisan vendor:publish --provider="Nuwave\Lighthouse\LighthouseServiceProvider" --tag=config
突然异变和查询
在执行查询之前,需要先插入数据。首先创建一个变异。
在进行查询之前,我们需要插入数据,让我们先创建一个突变。
sudo docker-compose exec app-server php artisan lighthouse:mutation createUser
通过这个操作,在 app\graphql\mutations 文件夹中会创建一个名为 CreateUser.php 的文件。
我们来添加一个简单的解析器吧。
这将在 app\graphql\mutations 文件夹中创建一个名为 CreateUser.php 的文件。
让我们添加一个简单的解决方案。
public function __invoke($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo)
{
$args["password"] = Hash::make($args["password"]);
return User::create($args);
}
在schema.graphql文件中添加根变更
将路由变更添加到 schema.graphql 文件中
type Mutation {
createUser(name: String!, email: String!, password: String!): User
}
通过使用这种方法,我可以轻松地制造出不眠症。 这就是我制造突变的方法。
或者,您可以使用 http://localhost/graphql-playground 提供的Playground。
通过这个,你可以创建一个简单的突变,因为我正在使用失眠,这是我创建突变的方法。
或者你可以在http://localhost/graphql-playground上使用游乐场。
Insomnia POST : http://localhost/graphql
Playground : http://localhost/graphql-playground
mutation{
createUser(name:"My Name",email:"my@email.com",password:"mypassword"){
id,
name,
}
}
当收到200时,我们可以确认响应已经是JSON格式的。我们可以创建查询请求来验证用户。
一旦你得到了200,你可以看到响应已经是一个 JSON,我们可以通过发出查询请求来检查用户。
POST: http://localhost/graphql
Playground : http://localhost/graphql-playground
query{
users{
data{
id,
name,
email
}
}
}