跳至正文
Wener Notes

GraphQL

约 3 分钟阅读
标签:资源精选
  • 主要让 consumer/client 方使用便捷
  • 核心特性/卖点 - 推荐开启
    • GlobalID - ID 包含类型消息,能实现 ID -> __typename
    • Graph Cache - 以 __typename + id 来缓存 - 类似一个内存的 KV 数据库,可以直接查询
      • 配合自定义 resolver 将查询指向缓存 能大量减少查询
      • 需要暴露 __typename, 但是一般影响不大
    • Batch
    • Subscription - EventSource, WebSocket
    • 代码生成
  • 推荐特性
    • partial query - 只返回需要的字段
    • Document Cache - 以查询维度来缓存
    • persisted query - 通过 hash 来缓存查询, 避免暴露整个查询内容
    • schema aware - 直接告诉查询引擎 schema 内容能让查询引擎更加智能
      • 例如 判断 nullable 可以先返回缓存数据再发起查询
    • federation - 多个 schema 合并
    • schema stitching - 多个 schema 合并
bash
# 获取 Schema
npm install -g graphqurl
gq https://my-graphql-engine.com/v1/graphql --introspect > schema.graphql
gq https://my-graphql-engine.com/v1/graphql -H 'X-Hasura-Admin-Secret: adminsecretkey' --introspect > schema.graphql
gq https://my-graphql-engine.com/v1/graphql --introspect --format json > schema.json

# https://github.com/apollographql/apollo-tooling
# schema.json
npm install -g apollo
apollo schema:download --endpoint https://my-graphql-engine.com/v1/graphql
apollo schema:download --endpoint https://my-graphql-engine.com/v1/graphql --header 'X-Hasura-Admin-Secret: adminsecretkey'
依赖包

Apollo

FAQ

N + 1

DateTime

vs REST

工具/客户端

参考

relay

global id

关联信息

反向链接、本文链接的其他页面和外部资料。

参考资料

GitHub23 条
Wikipedia1 条
Hacker News2 条
其他外链35 条
最近更新commit 346d308编辑