Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

263
Views
Uso de múltiples puntos finales en Apollo Client

Esta es mi primera publicación de discusión aquí. Aprendí Apollo + GraphQL a través de Odyssey . Actualmente, estoy creando mi propio proyecto usando Next.js, que requería obtener datos de 2 puntos finales de GraphQL .

Mi problema: ¿Cómo puedo obtener datos de múltiples puntos finales de GraphQL con ApolloClient ?

A continuación se muestra mi código para mi primer punto final:

 import { ApolloClient, InMemoryCache, createHttpLink } from "@apollo/client"; const client = new ApolloClient({ ssrMode: true, link: createHttpLink({ uri: "https://api.hashnode.com/", credentials: "same-origin", headers: { Authorization: process.env.HASHNODE_AUTH, }, }), cache: new InMemoryCache(), }); export default client;
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Lo que está tratando de lograr está un poco en contra del enfoque "One Graph" de Apollo. Eche un vistazo a las puertas de enlace y la federación: https://www.apollographql.com/docs/federation/

Dicho esto, es posible alguna solución pirateada, pero deberá mantener una estructura más compleja y especificar el punto final en cada consulta, lo que socava el mecanismo integrado y puede causar problemas de optimización.

 //Declare your endpoints const endpoint1 = new HttpLink({ uri: 'https://api.hashnode.com/graphql', ... }) const endpoint2 = new HttpLink({ uri: 'endpoint2/graphql', ... }) //pass them to apollo-client config const client = new ApolloClient({ link: ApolloLink.split( operation => operation.getContext().clientName === 'endpoint2', endpoint2, //if above endpoint1 ) ... }) //pass client name in query/mutation useQuery(QUERY, {variables, context: {clientName: 'endpoint2'}})

Este paquete parece hacer lo que quieres: https://github.com/habx/apollo-multi-endpoint-link

Además, consulte la discusión aquí: https://github.com/apollographql/apollo-client/issues/84

about 4 years ago · Juan Pablo Isaza Report

0

Encourted el mismo problema hoy. Quería tenerlo dinámico, así que esto es lo que se me ocurrió:

 export type DynamicLinkClientName = "aApp" | "bApp" | "graphqlApp"; type Link = RestLink | HttpLink; type DynamicLink = { link: Link; name: DynamicLinkClientName }; const LINK_MAP: DynamicLink[] = [ { link: aRestLink, name: "aApp" }, { link: bAppRestLink, name: "bApp" }, { link: graphqlAppLink, name: "graphqlApp" }, ]; const isClientFromContext = (client: string) => (op: Operation) => op.getContext().client === client; const DynamicApolloLink = LINK_MAP.reduce<ApolloLink | undefined>( (prevLink, nextLink) => { // When no name is specified, fallback to defaultLink. if (!prevLink) { return ApolloLink.split( isClientFromContext(nextLink.name), nextLink.link, defaultLink ); } return ApolloLink.split( isClientFromContext(nextLink.name), nextLink.link, prevLink ); }, undefined ) as ApolloLink;
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!