gqlgen
约 2 分钟阅读
- 99designs/gqlgenGitHub99designs/gqlgen99designs/gqlgen 是什么? · 基于生成的 GraphQL 引擎 · Schema first - 需要 DSL 定义 GraphQL Schema · 类型安全 · 支持 Plugin - 修改配置, 生成代码 · 缺点 · 库代码质量一般笔记:gqlgen 是什么?
- 基于生成的 GraphQL 引擎
- Schema first - 需要 DSL 定义 GraphQL Schema
- 类型安全
- 支持 Plugin - 修改配置, 生成代码
- 缺点
- 库代码质量一般
- 文档少
- 插件能力弱,且没什么 Demo
- gqlgen vs gophers vs graphql-go vs thunder链接gqlgen.com/feature-comparison99designs/gqlgen 是什么? · 基于生成的 GraphQL 引擎 · Schema first - 需要 DSL 定义 GraphQL Schema · 类型安全 · 支持 Plugin - 修改配置, 生成代码 · 缺点 · 库代码质量一般笔记:gqlgen
- gqlgen 最近开发不活跃 - 2021-08
- graphql-go/graphql 开发不活跃
- ⚠️ fragment 内的 alias 不会处理 - 非常严重且难排查
- 99designs/gqlgen#1271GitHub Issue99designs/gqlgen#127199designs/gqlgen 是什么? · 基于生成的 GraphQL 引擎 · Schema first - 需要 DSL 定义 GraphQL Schema · 类型安全 · 支持 Plugin - 修改配置, 生成代码 · 缺点 · 库代码质量一般笔记:gqlgen
- embeded 相同 struct 需要重复写 resolver
- 99designs/gqlgen#592GitHub Issue99designs/gqlgen#592 - resolve 逻辑不能定义在 interface 上
- 99designs/gqlgen#626GitHub Issue99designs/gqlgen#626 - 生成类型不支持 embedded
- enum 不支持 int - 99designs/gqlgen#366GitHub Issue99designs/gqlgen#366
- 99designs/gqlgen#1516GitHub Issue99designs/gqlgen#1516
- 不兼容 gqlparser 2.2 - 升级的时候注意
- 99designs/gqlgen#1031GitHub Issue99designs/gqlgen#1031 federation 只支持单个 @key
go get -u github.com/99designs/gqlgen
go run github.com/99designs/gqlgen init
go run github.com/99designs/gqlgen generateNote
type HandlerExtension interface {
// ExtensionName should be a CamelCase string version of the extension which may be shown in stats and logging.
ExtensionName() string
// Validate is called when adding an extension to the server, it allows validation against the servers schema.
Validate(schema ExecutableSchema) error
}+--- REQUEST POST /graphql --------------------------------------------+
| +- OPERATION query OpName { viewer { name } } -----------------------+ |
| | RESPONSE { "data": { "viewer": { "name": "bob" } } } | |
| +- OPERATION subscription OpName2 { chat { message } } --------------+ |
| | RESPONSE { "data": { "chat": { "message": "hello" } } } | |
| | RESPONSE { "data": { "chat": { "message": "byee" } } } | |
| +--------------------------------------------------------------------+ |
+------------------------------------------------------------------------+directive @goModel(model: String, models: [String!]) on OBJECT | INPUT_OBJECT | SCALAR | ENUM | INTERFACE | UNION
directive @goField(forceResolver: Boolean, name: String) on INPUT_FIELD_DEFINITION | FIELD_DEFINITION
scalar Time
scalar Any
scalar Map
scalar Upload禁用 Introspection
srv.AroundOperations(func(ctx context.Context, next graphql.OperationHandler) graphql.ResponseHandler {
if !isUserAdmin(ctx) {
graphql.GetOperationContext(ctx).DisableIntrospection = true
}
return next(ctx)
})关联信息
反向链接、本文链接的其他页面和外部资料。
参考资料
GitHub7 条
- 99designs/gqlgengithub.com/99designs/gqlgen
- 99designs/gqlgen#1031github.com/99designs/gqlgen/issues/1031
- 99designs/gqlgen#1271github.com/99designs/gqlgen/issues/1271
- 99designs/gqlgen#1516github.com/99designs/gqlgen/issues/1516
- 99designs/gqlgen#366github.com/99designs/gqlgen/issues/366
- 99designs/gqlgen#592github.com/99designs/gqlgen/issues/592
- 99designs/gqlgen#626github.com/99designs/gqlgen/issues/626
其他外链1 条
- gqlgen.com/feature-comparisongqlgen.com/feature-comparison