我可以在GraphQL请求标头中设置默认上下文吗?

时间:2019-09-06 14:29:58

标签: ruby-on-rails http graphql

我正在编写一个对同一GraphQL端点进行很多API调用的应用程序。我们大多数人使用相同的授权标头,但少数人需要不同的访问令牌。在研究问题时,似乎可以使用标头上下文来解决此问题,但是问题是我只想设置一次端点,因此,一旦加载模式,它便会崩溃,因为尚未设置上下文

HTTP = GraphQL::Client::HTTP.new("https://example.com") do
    def headers(context)
      {"Authorization": context[:access_token]}
    end
  end
 # code breaks at below line because context hasn't been set
  SCHEMA = GraphQL::Client.load_schema(HTTP)

我希望能够设置一些默认值,例如 {"Authorization": context[:master_token]=ENV.fetch(MASTER_TOKEN)}

有人知道我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

想通了。

结果证明,执行简单的条件分配可以解决问题。

{"Authorization": context[:token] ||= ENV.fetch(MASTER_TOKEN)}

因此,如果context[:token}nil,它将默认为MASTER_TOKEN