Apollo-link-rest: рдкреИрд░реЗрдВрдЯ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд╡реЗрд░реА рддрд░реНрдХ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдорд╛рд░реНрдЪ 2018  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: apollographql/apollo-link-rest

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрд╣рд╛рдВ рдмрд╛рд▓ рдХреНрд╡реЗрд░реА рддрд░реНрдХ рдореВрд▓ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдбреЙрдХреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрджрд╛рд╣рд░рдг

const getLukeRestLink = gql`
  query luke {
    Luke @rest(type: "Person", path: "people/1/") {
      name
      films {
        film @rest(type: "Film", path:  filmUrl) { // the filmUrl is the url that is returned in the films field
          title
        }
      }
    }
  }
`;

рдлрд┐рд▓реНрдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред
Q рдХреНрдпрд╛ рдлрд┐рд▓реНрдо рдХреНрд╡реЗрд░реА рдкрде рддрд░реНрдХ рдХреЗ url рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ @ рдзрд╛рди-рд╣реИрдорд┐рд▓реНрдЯрди! рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

  query luke {
    Luke @rest(type: "Person", path: "people/1/") {
      name
      films {
        url @export(as: "url")
        film @rest(type: "Film", path: ":url") {
          title
        }
      }
    }
  }

@export(as: тАж) рдирд┐рд░реНрджреЗрд╢ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЪрдпрдирд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдЖрдЧреЗ рдиреЗрд╕реНрдЯреЗрдб рдЖрд░рд╛рдо-рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред рдЫреЛрдЯреА рдЬрдЯрд┐рд▓рддрд╛: рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ @rest рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдпрдж рдпрд╣ рд╕реНрд╡рдпрдВ рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ N+1 рдЕрдиреБрд░реЛрдз рд╣реЛрдВрдЧреЗ рдЬрд╣рд╛рдВ N рд▓реНрдпреВрдХ рдХреА рдлрд┐рд▓реНрдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ @ рдзрд╛рди-рд╣реИрдорд┐рд▓реНрдЯрди! рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

  query luke {
    Luke @rest(type: "Person", path: "people/1/") {
      name
      films {
        url @export(as: "url")
        film @rest(type: "Film", path: ":url") {
          title
        }
      }
    }
  }

@export(as: тАж) рдирд┐рд░реНрджреЗрд╢ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЪрдпрдирд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдЖрдЧреЗ рдиреЗрд╕реНрдЯреЗрдб рдЖрд░рд╛рдо-рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред рдЫреЛрдЯреА рдЬрдЯрд┐рд▓рддрд╛: рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ @rest рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдпрдж рдпрд╣ рд╕реНрд╡рдпрдВ рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ N+1 рдЕрдиреБрд░реЛрдз рд╣реЛрдВрдЧреЗ рдЬрд╣рд╛рдВ N рд▓реНрдпреВрдХ рдХреА рдлрд┐рд▓реНрдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рдЖрдкрдХреЛ pathBuilder рдЙрдкрдпреЛрдЧреА рднреА рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрднреА рдХреЗ рд▓рд┐рдП tests/restLink.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИред

рдлрд┐рд▓реНрдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ, рдпрд╣ рдПрдХ рдпреВрдЖрд░рдПрд▓ рд╕рдВрдкрддреНрддрд┐ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
https://codesandbox.io/s/yw2766yl4x

@fbartho рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдФрд░ рдмреЛрдирд╕ рдЯрд┐рдк рдкреБрдирдГ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрд╕ рдиреЗрд╕реНрдЯреЗрдб рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдПрдкреАрдЖрдИ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдореИрдВ рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХрд╛рдзрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдзрдиреНрдпрд╡рд╛рдж, рдореЗрд░реЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред

@fbartho

рдореИрдВ @export рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ @peggyrayzis рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред рдкреИрдЧреА рдиреЗ рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЪрд░рдг рдореЗрдВ рд╣реИ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЙрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерд┐рдд рдлреАрдЪрд░ рдерд╛, рддреЛ рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдорд╣рд╕реВрд╕ рд╣реЛрдЧрд╛, @match рдХреЗ рд▓рд┐рдП рд░реЛрдб рдореИрдк рдХреНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?

@ рдзрд╛рди-рд╣реИрдорд┐рд▓реНрдЯрди рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб @rest( рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рднреАрддрд░ @export(as: рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдорд┐рд╢реНрд░рд┐рдд рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рд░реЗрд╕реНрдЯ рдФрд░ рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рд╕реНрдЯреЗрдЯ рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ рд╕реНрддрд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред /cc @peggyrayzis рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдХреЛрдИ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рд╣реИ?

рдореИрдВ @match рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреЛрдИ рднреА рд╕рдВрдХреЗрдд рдкрд╕рдВрдж рдЖрдПрдЧрд╛ рдЬрд╣рд╛рдВ рдЙрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рдХреГрдкрдпрд╛ https://codesandbox.io/s/6yv8y2z9v3 рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ

рдпрд╣ рдПрдХ рдПрдХрд▓ рдпреВрдЖрд░рдПрд▓ https://swapi.co/api/https://swapi.co/api/films/2/,https://swapi.co/api/films/6/,https://swapi.co/api/films/3/,https://swapi.co/api/films/1/,https://swapi.co/api/films/7/ рд▓реЛрдб рдХрд░реЗрдЧрд╛

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдлрд┐рд▓реНрдореЗрдВ рдПрдХ рд╕рд░рдгреА рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдкрдердмрд┐рд▓реНрдбрд░ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

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

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

lextas picture lextas  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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