@anvilco/apollo-server-plugin-introspection-metadata

中文文档
2.2.3发布于 2024/02/15MITCommonJS近 30 天下载 38.1万

阿波罗服务器的插件,允许将元数据添加到GraphQL Introvertion 查询响应中.

中文使用文档
文档目录5 节
  1. 安装
  2. 使用量
  3. API 密码
  4. REGEX_INTROSPECTION_QUERY
  5. 参考资料

@anvilco/ apollo-server-plugin-intertrocetion-metadata (英语)

阿波罗服务器的插件,允许将元数据添加到GraphQL Introvertion 查询响应中.

安装

使用 npm :

npm install --save-prod @anvilco/apollo-server-plugin-introspection-metadata

使用线条 :

yarn add @anvilco/apollo-server-plugin-introspection-metadata

使用量

考虑以下实例:

type MyType {
  myField(
    myArg: String
  ): String
}

type Query {
  myQuery(
    myArg: String
  ): String
}

type Mutation {
  myMutation(
    myArg: String
  ): String
}

interface MyInterface {
  id: ID
}

enum MyEnum {
  ONE
  TWO
  THREE
}

当瞬间 ApolloServer,通过下列选项:

import { ApolloServer } = from 'apollo-server'
import IntrospectionMetadataPlugin from '@anvilco/apollo-server-plugin-introspection-metadata'

// All keys are optional, all the way down the object.
// Only build/include what you want to add metadata for :)
const schemaMetadataByKind = {
  // Metadata for things of the kind "OBJECT"
  OBJECT: {
    MyType: {
      // Arbitrary metadata about the MyType Object
      metadata: {
        foo: "bar",
        baz: "bop",
      }
      fields: {
        myField: {
          // Arbitrary metadata about the myField Field
          metadata: {...}
          args: {
            myArg: {
              // Arbitrary metadata about the myArg Argument
              metadata: {...}
            }
          }
        }
      }
    },
    MyOtherType: {...},
    Query: {
      // Queries you've defined end up as Fields in the Queries Type, so this
      // structure follows that pattern
      fields: {
        myQuery: {
          // Arbitrary metadata about the myQuery Query
          metadata: {...}
          args: {
            myArg: {
              // Arbitrary metadata about the myArg Argument
              metadata: {...}
            }
          }
        }
      }
    },
    Mutation: {
      // Mutations you've defined end up as Fields in the Mutation Type, so
      // this structure follows that pattern
      fields: {
        myMutation: {
          // Arbitrary metadata about the myMutation Mutation
          metadata: {...}
          args: {
            myArg: {
              // Arbitrary metadata about the myArg Argument
              metadata: {...}
            }
          }
        }
      }
    },
    ...
  },
  // Metadata for things of the kind "INPUT_OBJECT"
  INPUT_OBJECT: {
    ...
  },
  // Metadata for things of the kind "SCALAR"
  SCALAR: {
    ...
  },
  // Metadata for things of the kind "ENUM"
  ENUM: {
    ...
  },
  // Metadata for things of the kind "INTERFACE"
  INTERFACE: {
    ...
  },
}

// If you want to only add this metadata in the Development
// environment:
const apolloPlugins = [];
if (process.env.NODE_ENV === 'development') {
  apolloPlugins.push(
    IntrospectionMetadataPlugin({
      schemaMetadata: schemaMetadataByKind
    })
  )
}

const apolloServer = new ApolloServer({
  //...
  introspection: true,
  plugins: apolloPlugins,
  //...
})

进取查询的输出会变成这样:

{
  data: {
    __schema: {
      //...
      types: [
        {
          kind: "OBJECT"
          name: "MyType"
          metadata: {
            foo: "bar",
            baz: "bop",
          },
          fields: [{
            //...
            name: "myField",
            // myField metadata
            metadata: {...}
            args: [{
              //...
              name: "myArg",
              // myField's myArg metadata
              metadata: {...}
            }]
          }]
        },
        {
          kind: "OBJECT"
          name: "Query"
          fields: [{
            //...
            name: "myQuery",
            // myQuery metadata
            metadata: {...}
            args: [{
              //...
              name: "myArg",
              // myQuery's myArg metadata
              metadata: {...}
            }]
          }]
        },
        {
          kind: "OBJECT"
          name: "Mutation"
          fields: [{
            //...
            name: "myMutation",
            // myMutation metadata
            metadata: {...}
            args: [{
              //...
              name: "myArg",
              // myMutation's myArg metadata
              metadata: {...}
            }]
          }]
        },
        //...
      ]
    }
  }
}

API 密码

generateApolloPlugin (单位:千美元)default 出口)

这就是你最可能来这里的目的 见 Javadoc 在 指数.js 更多细节.

addMetadata

如果你真的没有使用阿波罗服务器, 或者想用你的元数据 来增强来自别处的内视查询反应, 那么这个功能可能就是你要找的。 见 Javadoc 在 指数.js

isIntrospectionQuery

一个以阿波罗为上下文并返回布尔函数,表示它是否看起来是一个内向查询。 有用,如果你考虑执行自己的 testFn 联合国 generateApolloPlugin 电话.

REGEX_INTROSPECTION_QUERY

用于测试查询字符串的Javascription RegEx,用于确定它是否是内检查询.

参考资料

灵感来自 @ cleartax/ apollo-server-plugin-introvision-auth (英语)。 。 。 .

版本与发布记录

@anvilco/apollo-server-plugin-introspection-metadata 共发布 16 个版本,首次发布于 2021/01/28;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.2.3latest2024/02/152 年前
2.2.22023/11/073 年前
2.2.12023/06/013 年前
2.2.02023/05/273 年前
2.1.02023/05/273 年前
2.0.22023/04/253 年前

关于 @anvilco/apollo-server-plugin-introspection-metadata 的常见问题

@anvilco/apollo-server-plugin-introspection-metadata 是什么?

阿波罗服务器的插件,允许将元数据添加到GraphQL Introvertion 查询响应中.

如何安装 @anvilco/apollo-server-plugin-introspection-metadata?

在项目目录运行 npm install @anvilco/apollo-server-plugin-introspection-metadata,或使用 pnpm add / yarn add / bun add。

@anvilco/apollo-server-plugin-introspection-metadata 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/anvilco__apollo-server-plugin-introspection-metadata 是否存在。

@anvilco/apollo-server-plugin-introspection-metadata 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@anvilco/apollo-server-plugin-introspection-metadata 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=14。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@anvilco/apollo-server-plugin-introspection-metadata 可以商用吗?

@anvilco/apollo-server-plugin-introspection-metadata 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@anvilco/apollo-server-plugin-introspection-metadata 的下载量有多少?

根据 npm 官方下载统计,@anvilco/apollo-server-plugin-introspection-metadata 在 2026/10/06 – 2026/11/04 这 30 天内被下载 380,891 次,日均约 12,696 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@anvilco/apollo-server-plugin-introspection-metadata 还在维护吗?

最新版本 2.2.3 发布于 2024/02/15(2 年前);至今共发布 16 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/01/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。