Apollo-link-rest: 允许为每个端点指定“标头”

创建于 2019-02-05  ·  11评论  ·  资料来源: apollographql/apollo-link-rest


我认为应该可以为每个端点指定互斥标头。

例如:我将WordPress REST API和WooCommerce REST API(v2和v3)配置为我的不同端点。 因此,应该有可能为每个端点提供不同的Authorization标头。

enhancement💡 feature help wanted 🛠

最有用的评论

@paulpdaniels,这将是一个示例,其中我使用带有授权标头的WP REST API作为默认端点,而WooCommerce REST API v2和v3作为单独的端点– v3要求授权,而v2不需要:

import { camelCase, snakeCase } from 'lodash';
import { RestLink } from 'apollo-link-rest';

if (typeof window === 'undefined') {
  global.btoa = str => Buffer.from(str).toString('base64');
}

const restLink = new RestLink({
  uri: 'https://example.com/wp/v2',
  headers: {
    authorization: `Basic ${btoa('client_key:secret_key')}`,
  },
  endpoints: {
    'wc-v2': {
      uri: 'https://example.com/wp-json/wc/v2',
      headers: {
        authorization: undefined,
      },
    },
    'wc-v3': {
      uri: 'https://example.com/wp-json/wc/v3',
      headers: {
        authorization: `Basic ${btoa('another_client_key:secret')}`,
      },
    },
  },
  fieldNameNormalizer: camelCase,
  fieldNameDenormalizer: snakeCase,
});

所有11条评论

好点子! 可能我们应该允许我们的初始标头配置是每次执行的标头/哈希或函数? @efoken @paulpdaniels

这是有道理的,我想这就是现在的工作方式,但是我想我还没有解决具有多个具有不同头要求的资源的问题。

@efoken您是否有一个_how_的示例,您想使用它。 只是为了了解典型用例的外观。

@paulpdaniels,这将是一个示例,其中我使用带有授权标头的WP REST API作为默认端点,而WooCommerce REST API v2和v3作为单独的端点– v3要求授权,而v2不需要:

import { camelCase, snakeCase } from 'lodash';
import { RestLink } from 'apollo-link-rest';

if (typeof window === 'undefined') {
  global.btoa = str => Buffer.from(str).toString('base64');
}

const restLink = new RestLink({
  uri: 'https://example.com/wp/v2',
  headers: {
    authorization: `Basic ${btoa('client_key:secret_key')}`,
  },
  endpoints: {
    'wc-v2': {
      uri: 'https://example.com/wp-json/wc/v2',
      headers: {
        authorization: undefined,
      },
    },
    'wc-v3': {
      uri: 'https://example.com/wp-json/wc/v3',
      headers: {
        authorization: `Basic ${btoa('another_client_key:secret')}`,
      },
    },
  },
  fieldNameNormalizer: camelCase,
  fieldNameDenormalizer: snakeCase,
});

有什么消息吗? 我处于使用rest-link的情况,并且拥有自己的需要身份验证的端点和另一个需要密钥的第三方端点。

现在有什么例子可以解决吗?

我也遇到以下情况:在某些端点上需要授权标头,而在其他端点上则不需要。 我找不到实现此目的的方法。

在这方面做过任何工作吗? 我遇到一种情况,其中一个端点需要基本身份验证,而另一个端点需要承载身份验证

有人找到解决方案了吗?

任何解决方法? 我也需要为不同的端点自定义标头。

对此有任何更新吗? 当前正在从事一个项目,该项目要求每个终结点计算机具有不同的身份验证和标头。 有没有解决方法?

您可以提供一个customFetch实现,该实现可以分析目标URL并根据URL前缀注入/附加标头,因此今天可以这样做。

请告知该解决方法是否不适合您。

此页面是否有帮助?
0 / 5 - 0 等级