lighthouse in laravel 理解概念
Lighthouse理解定义
laravel 是一个小朋友。另一个小朋友叫 Lighthouse ,Lighthouse 带了另一个小朋友叫 Graphql ,然后三个开开心心玩在一起。laravel 借助 graphql 去查询 database
Lighthouse 针对 graphql 封装了很多东西。比方说:directive,scalar,等等,还可以让你定制前面介绍的两个英文。当然可定制的更多,config 也可以搞搞。
也有一个小朋友名字叫 mll-lab/laravel-graphql-playground,他是用来测试graphql接口的
各事物理解
先理解好各种东西是干嘛的,才能更好的使用他们
命令
(随便看看,其实还有更多命令)
- php artisan vendor:lighthouse --tag=lighthouse-schema 项目根目录生成graphyql文件夹。内有schema文件
- php artisan vendor:lighthouse --tag=lighthouse-config 根目录 /config 文件夹中生成 lighthouse.php 以配置 lighthouse。比方说配置命名空间(告诉Lighthouse哪里找什么东西),配置参数名称,etc
- php artisan lighthouse:query QueryName 根据默认 /config 中 lighthouse.php 配置的话,此命令会在app/Graphql/Query 文件夹中生成 类。此类对应下面说到的 Field 的 Resolver。除了 lighthouse:query ,还可以是 lighthouse:mutation
根节点
- Query
- Mutations
- 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
分为三部分:
- name (名砸)
- field (节点内的属性)
- saclar (Int,String 等返回值,可自己定制。)
Directive
带有 @ 的,如 @all @update 等等
scalar
明儿写
本文地址:https://blog.csdn.net/ou_nvhai/article/details/108970249