欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

lighthouse in laravel 理解概念

程序员文章站 2022-07-06 13:39:38
Lighthouse理解定义laravel 是一个小朋友。另一个小朋友叫Lighthouse ,Lighthouse 带了另一个小朋友叫 Graphql ,然后三个开开心心玩在一起。laravel 借助 graphql 去查询 databaseLighthouse 针对 graphql 封装了很多东西。比方说:directive,scalar,等等,还可以让你定制前面介绍的两个英文。当然可定制的更多,config 也可以搞搞。也有一个小朋友名字叫 mll-lab/laravel-graphql....

Lighthouse理解定义

laravel 是一个小朋友。另一个小朋友叫 Lighthouse ,Lighthouse 带了另一个小朋友叫 Graphql ,然后三个开开心心玩在一起。laravel 借助 graphql 去查询 database

Lighthouse 针对 graphql 封装了很多东西。比方说:directive,scalar,等等,还可以让你定制前面介绍的两个英文。当然可定制的更多,config 也可以搞搞。

也有一个小朋友名字叫 mll-lab/laravel-graphql-playground,他是用来测试graphql接口的

各事物理解

先理解好各种东西是干嘛的,才能更好的使用他们

命令

(随便看看,其实还有更多命令)

  1. php artisan vendor:lighthouse --tag=lighthouse-schema 项目根目录生成graphyql文件夹。内有schema文件
  2. php artisan vendor:lighthouse --tag=lighthouse-config 根目录 /config 文件夹中生成 lighthouse.php 以配置 lighthouse。比方说配置命名空间(告诉Lighthouse哪里找什么东西),配置参数名称,etc
  3. php artisan lighthouse:query QueryName 根据默认 /config 中 lighthouse.php 配置的话,此命令会在app/Graphql/Query 文件夹中生成 类。此类对应下面说到的 Field 的 Resolver。除了 lighthouse:query ,还可以是 lighthouse:mutation

根节点

  1. Query
  2. Mutations
  3. Subscription

这几个节点暴露给 endpoint 终端使用。所用的查询,还有变更(增删改),使用到根节点内的 field (字段)。fields in root type

 

Field  --  注意 resolver

Type Query{
    users:(name:String):User @all
    posts:[Post!]! @all
}


字段名 name:users , posts
标  量 scalar :String
指  令 directive : @all

field 指的就是这个name

针对每一个 field ,被调用的时候都会调用对应的 resolver。通过resolver 获得数据。resolver 可以通过上面提及的命令生成。另一个选择是,通过 lighthouse ,结合它的指令进行具体操作

1.通过 app/Graphql/Users.php 获得数据(对应上面 Query 中的 field:users)

该文件定义resolver。当你没用 lighthouse的 声明(比方说directive,scalar那些),会调用这个你生成定义的 resolver 。 你用lighthouse的话,就会忽略你生成定义的 resolver,lighthouse 会帮你拿到 db 的数据。

 

Schema

Type

分为三部分:

  1. name (名砸)
  2. field (节点内的属性)
  3. saclar (Int,String 等返回值,可自己定制。)

Directive

带有 @ 的,如 @all  @update 等等

 

scalar

 

 

明儿写

本文地址:https://blog.csdn.net/ou_nvhai/article/details/108970249