GraphQL Disable Introspection 项目教程

GraphQL Disable Introspection 项目教程

graphql-disable-introspection Disable Introspection in GraphQL-JS with a simple validation rule graphql-disable-introspection 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-disable-introspection

1. 项目目录结构及介绍

graphql-disable-introspection/
├── .gitignore
├── LICENSE
├── README.md
├── index.js
├── package-lock.json
├── package.json
└── test.js
  • .gitignore: 用于指定 Git 版本控制系统忽略的文件和目录。
  • LICENSE: 项目的开源许可证文件,本项目使用 MIT 许可证。
  • README.md: 项目的说明文档,包含项目的基本信息、使用方法和示例。
  • index.js: 项目的主入口文件,定义了禁用 GraphQL 内省的验证规则。
  • package-lock.json: 锁定项目依赖包的版本,确保在不同环境中安装相同的依赖包。
  • package.json: 项目的配置文件,包含项目的基本信息、依赖包和脚本命令。
  • test.js: 项目的测试文件,用于测试禁用内省功能的正确性。

2. 项目的启动文件介绍

index.js

index.js 是项目的主入口文件,主要功能是定义并导出一个禁用 GraphQL 内省的验证规则。以下是文件的主要内容:

import { GraphQLError, specifiedRules } from 'graphql';

const NoIntrospection = (context) => {
  return {
    Field(node) {
      if (node.name.value === '__schema' || node.name.value === '__type') {
        context.reportError(
          new GraphQLError('GraphQL introspection is not allowed', [node])
        );
      }
    },
  };
};

export default NoIntrospection;

功能介绍

  • NoIntrospection: 这是一个验证规则函数,用于检查 GraphQL 查询中是否包含 __schema__type 字段。如果包含,则报告错误并禁用内省功能。
  • context.reportError: 用于报告错误,阻止内省查询的执行。

3. 项目的配置文件介绍

package.json

package.json 是项目的配置文件,包含项目的基本信息、依赖包和脚本命令。以下是文件的主要内容:

{
  "name": "graphql-disable-introspection",
  "version": "1.0.0",
  "description": "Disable Introspection in GraphQL-JS with a simple validation rule",
  "main": "index.js",
  "scripts": {
    "test": "node test.js"
  },
  "keywords": [
    "graphql",
    "introspection",
    "security"
  ],
  "author": "helfer",
  "license": "MIT",
  "dependencies": {
    "graphql": "^15.5.0"
  }
}

配置项介绍

  • name: 项目的名称,即 graphql-disable-introspection
  • version: 项目的版本号,当前为 1.0.0
  • description: 项目的描述,说明该项目用于禁用 GraphQL 内省功能。
  • main: 项目的入口文件,即 index.js
  • scripts: 定义了项目的脚本命令,例如 test 命令用于运行测试文件 test.js
  • keywords: 项目的关键词,便于在 npm 上搜索。
  • author: 项目的作者。
  • license: 项目的开源许可证,本项目使用 MIT 许可证。
  • dependencies: 项目的依赖包,当前仅依赖 graphql 包。

通过以上介绍,您可以了解 graphql-disable-introspection 项目的基本结构、启动文件和配置文件。希望这篇教程对您有所帮助!

graphql-disable-introspection Disable Introspection in GraphQL-JS with a simple validation rule graphql-disable-introspection 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-disable-introspection

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔡怀权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值