Apollo-link-rest: Izinkan menentukan `headers` per endpoint

Dibuat pada 5 Feb 2019  ·  11Komentar  ·  Sumber: apollographql/apollo-link-rest


Saya pikir seharusnya mungkin untuk menentukan tajuk eksklusif per titik akhir.

Misalnya: Saya memiliki WordPress REST API dan WooCommerce REST API (v2 & v3) dikonfigurasi sebagai endpoint saya yang berbeda. Jadi, mungkin untuk memberikan header Otorisasi yang berbeda untuk setiap titik akhir.

enhancement💡 feature help wanted 🛠

Komentar yang paling membantu

@paulpdaniels ini akan menjadi contoh di mana saya menggunakan WP REST API dengan header otorisasi sebagai titik akhir default, dan WooCommerce REST API v2 dan v3 sebagai titik akhir terpisah - v3 memerlukan otorisasi dan v2 tidak:

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

Semua 11 komentar

Poin yang bagus! Mungkinkah kita harus mengizinkan konfigurasi header awal kita menjadi Header / Hash atau Fungsi untuk dieksekusi setiap saat? @efoken @paul

Masuk akal, tbh saya pikir begitulah cara kerjanya sekarang, tapi saya kira saya belum menangani masalah yang memiliki banyak sumber daya dengan persyaratan tajuk yang berbeda.

@efoken apakah Anda memiliki contoh _how_ yang ingin Anda gunakan. Hanya untuk mengetahui seperti apa kasus penggunaan yang biasa akan terlihat.

@paulpdaniels ini akan menjadi contoh di mana saya menggunakan WP REST API dengan header otorisasi sebagai titik akhir default, dan WooCommerce REST API v2 dan v3 sebagai titik akhir terpisah - v3 memerlukan otorisasi dan v2 tidak:

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

Ada berita tentang ini? Saya dalam situasi di mana saya menggunakan rest-link, dan memiliki titik akhir saya sendiri yang memerlukan otentikasi dan titik akhir pihak ketiga lain yang memerlukan kunci.

Apakah ada contoh bagaimana melakukan ini sekarang?

Saya juga mengalami situasi di mana saya memerlukan header otorisasi pada beberapa titik akhir tetapi tidak pada yang lain. Saya tidak dapat menemukan cara untuk mencapai ini.

Apakah sudah ada pekerjaan yang dilakukan untuk ini? Saya mengalami situasi di mana satu titik akhir memerlukan otorisasi dasar dan titik akhir lainnya memerlukan otorisasi pembawa

Adakah yang sudah menemukan solusi untuk ini?

Ada solusi untuk ini? Saya juga dalam situasi di mana saya perlu menyesuaikan tajuk untuk titik akhir yang berbeda.

Apakah sudah ada pembaruan tentang ini? Saat ini mengerjakan proyek yang membutuhkan autentikasi dan header berbeda untuk setiap titik akhir. Apakah ada solusi untuk ini?

Anda dapat menyediakan implementasi customFetch yang menganalisis URL target dan memasukkan / menambahkan header berdasarkan awalan URL, jadi ini bisa dilakukan sekarang.

Harap beri tahu jika solusi itu tidak berhasil untuk Anda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat