Pothos GraphQL
Pothos 是一个基于插件的 TypeScript GraphQL 架构构建器。
它使得在 TypeScript 中构建 GraphQL 架构变得简单、快速且愉快。Pothos 的核心在运行时不会增加任何开销,并且只依赖 graphql
库。
Pothos 是在 TypeScript 中构建 GraphQL 架构最具类型安全的方式。通过利用类型推断和 TypeScript 强大的类型系统,Pothos 只需要很少的手动类型定义,也不需要代码生成。
Pothos 拥有独特而强大的插件系统,使每个插件的功能都像是内置在核心库中一样。插件可以通过添加新的选项或方法来扩展 API 的几乎任何部分,这些选项或方法可以充分利用 Pothos 类型系统。
Hello, World
import { createYoga } from 'graphql-yoga';
import { createServer } from 'node:http';
import SchemaBuilder from '@pothos/core';
const builder = new SchemaBuilder({});
builder.queryType({
fields: (t) => ({
hello: t.string({
args: {
name: t.arg.string(),
},
resolve: (parent, { name }) => `hello, ${name || 'World'}`,
}),
}),
});
const yoga = createYoga({
schema: builder.toSchema(),
});
const server = createServer(yoga);
server.listen(3000);
Pothos 的独特之处
- Pothos 从一开始就被设计为利用 TypeScript 提供最佳的类型安全性。
- Pothos 清晰地区分了外部 GraphQL API 的结构和内部数据表示。
- Pothos 拥有庞大的插件生态系统,提供各种功能,同时保持插件间的良好互操作性。
- Pothos 不依赖代码生成或实验性装饰器来实现类型安全。
- Pothos 被设计为适用于各种规模的应用,从小型原型到大型企业应用,并已在包括 Airbnb 和 Netflix 在内的一些最大的科技公司中使用。
让 Pothos 更强大的插件
-
将现有的 GraphQL 类型添加到你的架构中
-
为你的架构添加全局、类型级或字段级的授权检查
-
用于定义和限制查询复杂度的插件
-
以类型安全的方式集成现有的架构 GraphQL 指令
-
一个用于轻松在 GraphQL 架构中包含错误类型并将错误类型连接到解析器的插件
-
快速为你的类型和字段定义数据加载器,以避免 n+1 查询问题
-
添加模拟解析器,便于测试
-
一个用于更高效集成 Prisma 的插件,可以帮助解决 n+1 问题并更高效地解析查询
-
易于使用的构建方法,用于定义 Relay 风格的节点和连接,以及用于基于游标的分页的实用工具
-
定义无需解析器或手动类型定义的简单对象类型
-
使你的图中的任何部分都可订阅,以获取数据变化的实时更新
-
构建你的图的多个子集,轻松在内部和外部 API 之间共享代码
-
为解析器执行添加追踪功能,支持 opentelemetry、newrelic、century、日志记录和自定义追踪器
-
使用内联输入对象定义字段
-
验证你的输入和参数
赞助商
Pothos 的开发得到了以下慷慨人士和组织的赞助支持: