Apollo-link-rest: Autoriser la spĂ©cification d'en-tĂȘtes par point de terminaison

CrĂ©Ă© le 5 fĂ©vr. 2019  Â·  11Commentaires  Â·  Source: apollographql/apollo-link-rest


Je pense qu'il devrait ĂȘtre possible de spĂ©cifier des en-tĂȘtes exclusifs par point de terminaison.

Par exemple: j'ai configurĂ© l'API REST WordPress et l'API REST WooCommerce (v2 et v3) comme mes diffĂ©rents points de terminaison. Il devrait donc ĂȘtre possible de fournir diffĂ©rents en-tĂȘtes d'autorisation pour chaque point de terminaison.

enhancement💡 feature help wanted 🛠

Commentaire le plus utile

@paulpdaniels, ce serait un exemple oĂč j'utilise l'API WP REST avec l'en-tĂȘte d'autorisation comme point de terminaison par dĂ©faut, et les API REST WooCommerce v2 et v3 comme points de terminaison sĂ©parĂ©s - la v3 nĂ©cessite une autorisation et la v2 ne le fait pas:

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,
});

Tous les 11 commentaires

Bon point! Peut-ĂȘtre devrions-nous permettre Ă  notre configuration initiale d'en-tĂȘtes d'ĂȘtre un en-tĂȘte / hachage ou une fonction Ă  exĂ©cuter Ă  chaque fois? @efoken @paulpdaniels

Cela a du sens, je pensais que c'Ă©tait ainsi que cela fonctionnait maintenant, mais je suppose que je n'ai pas traitĂ© de problĂšme avec plusieurs ressources avec des exigences d'en-tĂȘte diffĂ©rentes.

@efoken avez-vous un exemple de _comment_ vous aimeriez l'utiliser. Juste pour avoir une idée de ce à quoi ressemblerait un cas d'utilisation typique.

@paulpdaniels, ce serait un exemple oĂč j'utilise l'API WP REST avec l'en-tĂȘte d'autorisation comme point de terminaison par dĂ©faut, et les API REST WooCommerce v2 et v3 comme points de terminaison sĂ©parĂ©s - la v3 nĂ©cessite une autorisation et la v2 ne le fait pas:

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,
});

des nouvelles Ă  ce sujet? Je suis dans une situation oĂč j'utilise rest-link et j'ai mon propre point de terminaison qui nĂ©cessite une authentification et un autre point de terminaison tiers qui nĂ©cessite une clĂ©.

Y a-t-il des exemples de la façon de procéder maintenant?

J'ai Ă©galement une situation oĂč j'ai besoin d'un en-tĂȘte d'autorisation sur certains points de terminaison mais pas sur d'autres. Je ne peux pas trouver un moyen d'accomplir cela.

Un travail a-t-il Ă©tĂ© fait Ă  ce sujet? J'ai une situation oĂč un point de terminaison a besoin d'une authentification de base et un autre a besoin d'une authentification du porteur

Quelqu'un a-t-il encore trouvé une solution à cela?

Une solution de contournement pour cela? Je suis Ă©galement dans une situation oĂč j'ai besoin de personnaliser les en-tĂȘtes pour diffĂ©rents points de terminaison.

Y a-t-il eu une mise Ă  jour Ă  ce sujet? Travaille actuellement sur un projet qui nĂ©cessite une authentification et des en-tĂȘtes diffĂ©rents pour chaque point de terminaison. Y a-t-il une solution de contournement pour cela?

Vous pouvez fournir une implĂ©mentation customFetch qui analyse l'URL cible et injecte / ajoute des en-tĂȘtes en fonction d'un prĂ©fixe d'URL, c'est donc faisable aujourd'hui.

Veuillez indiquer si cette solution de contournement ne fonctionne pas pour vous.

Cette page vous a été utile?
0 / 5 - 0 notes