Apollo-link-rest: السماح بتحديد "رؤوس" لكل نقطة نهاية

تم إنشاؤها على ٥ فبراير ٢٠١٩  ·  11تعليقات  ·  مصدر: apollographql/apollo-link-rest


أعتقد أنه من الممكن تحديد رؤوس حصرية لكل نقطة نهاية.

على سبيل المثال: لدي WordPress REST API و WooCommerce REST API (v2 & v3) تم تكوينهما كنقاط نهاية مختلفة. لذلك يجب أن يكون من الممكن توفير رؤوس تخويل مختلفة لكل نقطة نهاية.

enhancement💡 feature help wanted 🛠

التعليق الأكثر فائدة

paulpdaniels سيكون هذا مثالاً حيث أستخدم WP REST API مع رأس التفويض كنقطة نهاية افتراضية ، و WooCommerce REST APIs v2 و v3 كنقاط نهاية منفصلة - يتطلب الإصدار 3 ترخيصًا بينما لا يتطلب الإصدار 2:

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 كومينتر

نقطة جيدة! ربما يجب أن نسمح بتكوين رؤوسنا الأولية لتكون رؤوس / تجزئة أو وظيفة لتنفيذها في كل مرة؟ تضمين التغريدة

من المنطقي ، tbh اعتقدت أن هذه هي الطريقة التي تعمل بها الآن ، لكن أعتقد أنني لم أتعامل مع مشكلة وجود موارد متعددة بمتطلبات رأس مختلفة.

efoken هل لديك مثال على _how_ تريد استخدامه. فقط للتعرف على شكل حالة الاستخدام النموذجية.

paulpdaniels سيكون هذا مثالاً حيث أستخدم WP REST API مع رأس التفويض كنقطة نهاية افتراضية ، و WooCommerce REST APIs v2 و v3 كنقاط نهاية منفصلة - يتطلب الإصدار 3 ترخيصًا بينما لا يتطلب الإصدار 2:

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 التقييمات