Apollo-link-rest: рдкреНрд░рддрд┐ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ `рд╢реАрд░реНрд╖рдХ` рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдлрд╝рд░ре░ 2019  ┬╖  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 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ - 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 рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕

@paulpdaniels рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЗ рд╕рд╛рде WP REST API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ WooCommerce REST APIs 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,
});

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░? рдореИрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореИрдВ рд░реЗрд╕реНрдЯ-рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореЗрд░рд╛ рдЕрдкрдирд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдПрдХ рдЕрдиреНрдп рддреГрддреАрдп-рдкрдХреНрд╖ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЕрдм рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рдирд╛ рд╣реИ?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рднреА рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдХреБрдЫ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдкрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рджреВрд╕рд░реЛрдВ рдкрд░ рдирд╣реАрдВред рдореБрдЭреЗ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдХрд╛рдо рд╣реБрдЖ рд╣реИ? рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЛ рдореВрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рд╡рд╛рд╣рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ?

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд╛рдп? рдореИрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рд╣реВрдВ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рдЖрдпрд╛ рд╣реИ? рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдРрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрде рдФрд░ рд╣реЗрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рд░реНрдп рд╣реИ?

рдЖрдк рдПрдХ рдХрд╕реНрдЯрдордлрд╝реЗрдЪ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд▓рдХреНрд╖реНрдп URL рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ URL рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЗрдбрд░ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ/рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрдЬ рд╕рдВрднрд╡ рд╣реИред

рдХреГрдкрдпрд╛ рд╕рд▓рд╛рд╣ рджреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kevinrobayna picture kevinrobayna  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fkolar picture fkolar  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

D1no picture D1no  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

eranimo picture eranimo  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MichelDiz picture MichelDiz  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ