首页 > 解决方案 > 如何在 GraphQL API 中有一个根查询/变异参数?

问题描述

我需要有一个“全局参数”,可以(最多)一次指定并应用于整个请求(但内部有许多查询/突变)。如果我能够让客户指定它query(arg: "value") {...}和/或mutation(arg: "value") {...}我会......但我知道这是为“变量”保留的。我不喜欢我知道的其他选择:

  1. HTTP 标头 - 仅将其与 HTTP 相关联,不在模式中,没有很好地记录。
POST /graphql
X-MyArg: some-value
...

{"query":"{someQuery{id name}}"}
  1. HTTP(URL)查询字符串参数 - 呃......我喜欢单个常见的 URL,也与(1)相同的问题
POST /graphql?myArg=some-value
...

{"query":"{someQuery{id name}}"}
  1. 引入一个中间包装字段来公开这个参数......但这会使一切变得更长,而且我不知道有一种说法“必须最多指定/请求一次”,而支持多次出现至少对某些人来说没有意义其中(例如身份验证/授权/安全相关等)。
POST /graphql
...

{"query":"{wrapper(arg: \"some-value\"){someQuery{id name}}}"}
  1. 作弊/破解并要求指定一个$arg变量(意味着由 API 客户端定义),同时以某种方式防止我正在使用的框架在该变量实际上没有从内部任何地方引用时抛出。
POST /graphql
...

{"query":"query($arg:String){someQuery{id name}}","variables":{"arg":"some-value"}}

任何人都可以帮忙吗?我是错过了什么,还是我真的被迫选择其中一种毒丸?

标签: graphql

解决方案


推荐阅读