首页 > 其他分享 >学习 GraphQL Directives

学习 GraphQL Directives

时间:2022-08-29 01:22:47浏览次数:66  
标签:resolve directive 学习 GraphQL Directives decorator schema

GraphQL 的 directive 有点类似 typescript 的 decorator. 可以被附加在 schema 中的各个地方(通过 location 来定义可以用在哪里),如 type, field, fragment, mutation, input 等等。

其实现的基本方式,是继承特定的基类,然后实现一个自己想要的 decorator 子类,该类中通过 visitor pattern 定义了一堆 visitXXX 方法,可以在其中定义想要修改的 resolve schema 的行为。

比如,可以直接整个儿将 resolver 替换掉,或者做一些前置/后置操作等等。

directive 还可以带参数,可以通过这种方式写入一些元数据,然后在生效位置靠后的 directive 解析的时候,再使用这些元数据,以实现特定的功能。

directive 常用于修改 resolve 的结果,或者加上额外的控制等等。比如做 auth 的相关控制,或者针对结果中的 date / string 做特定的转换,等等。

参考:https://juejin.cn/post/6967605500103884808

标签:resolve,directive,学习,GraphQL,Directives,decorator,schema
From: https://www.cnblogs.com/new-start/p/graphql_directive.html

相关文章

  • c++学习案例:猜数字游戏
    最近在学习C++,遇到了一个案例:猜数字游戏案例要求:系统生成一个范围在1-100的随机整数,用户有5次猜数字的机会,当用户猜的数字大于或小于生成的值时进行提示,5次没猜对则失败,......
  • HCIA学习笔记二十五:三层交换机实现VLAN间路由
    一、三层交换机功能模型二、三层交换机配置三、三层交换机实现VLAN间路由实验 1)分别在交换机中拖出1台S5700、终端中拖出2台PC机,然后选择设备连线,点击Copper进行设备......
  • Flask 学习-23.restful 接口开发
    前言Flask-RESTful是一个Flask扩展,它添加了快速构建RESTAPIs的支持。它当然也是一个能够跟你现有的ORM/库协同工作的轻量级的扩展。Flask-RESTful鼓励以最小设置......
  • Spring学习笔记(三)——Spring依赖注入
    1.SpringBean属性注入的几种方式1.1构造函数注入使用构造函数实现属性注入大致步骤如下:在Bean中添加一个有参构造函数,构造函数内的每一个参数代表一个需要注入的属......
  • Django_request学习
    Django_request(1)请求方式这里使用一个接口测试软件postman可以看到里面有非常多的发起请求的方式,最常用的就是GET和POST请求,但是这些方法无法在网页的url里显示在学......
  • Linux学习笔记3——vi和vim编辑器
    Linux学习笔记3——vi和vim编辑器一、vi和vim编辑器:vi和vim是Linux中的文本编辑器,用来在Linux中创建、查看或编辑文本文件,就好像window系统的记事本一样,但是不能查看图片......
  • Linux学习笔记2——目录结构
    Linux学习笔记2——目录结构一、Linux的目录结构:Linux只有一个根目录:/层级式的目录结构:1)root:该目录为系统管理员目录,root是具有超级权限的用户。2)bin->usr/bin:存放系......
  • python学习Day54
    Day54今日内容概要一.DOM其他操作1.JS获取用户输入2.JS类属性操作3.JS样式操作(了解)4.JS事件(1)什么是事件(2)绑定事件的两种方式(3)事件中的重点关键字this......
  • HCIA学习笔记二十四:单臂路由实现VLAN间路由
    一、VLAN的缺点• VLAN隔离了二层广播域,也就严格地隔离了各个VLAN之间的任何流量,分属于不同VLAN的用户不能互相通信。二、使用VLANTrunking• 二层交换机和路由器之......
  • 【django学习-02】MTV模式与django流程
    一:MVC和MTV模式著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。模型负责业务对象与数据库的对......