【问题标题】:What is the difference between SchemaLink and HttpLink for ApolloClient?ApolloClient 的 SchemaLink 和 HttpLink 有什么区别?
【发布时间】:2021-05-26 09:50:33
【问题描述】:

对于ApolloClient,我们可以使用SchemaLinkHttpLink

使用一个或另一个有什么好处吗?

// SchemaLink
function createLink() {
  const { SchemaLink } = require('@apollo/client/link/schema')
  const { schema } = require('../server/schema')
  return new SchemaLink({ schema })
}

// HttpLink
function createLink() {
  const { HttpLink } = require('@apollo/client/link/http')
  return new HttpLink({
    uri: '/api/graphql',
    credentials: 'same-origin'
}

// ApolloClient
function createApolloClient() {
  return new ApolloClient({
    link: createLink(),
    cache: new InMemoryCache()
  })
}

【问题讨论】:

    标签: reactjs apollo apollo-client react-apollo


    【解决方案1】:

    HttpLink 正在通过 HTTP POST 请求将 GraphQL 查询转发到提供的端点 uri

    SchemaLink,嗯,the documentation 解释了它的作用:

    架构链接提供了一个 graphql 执行环境,允许您对提供的架构执行 GraphQL 操作。此类行为通常用于服务器端渲染 (SSR),以避免网络调用和模拟数据。

    因此,HttpLink 用于通过网络访问远程 GraphQL 服务器(通常在客户端应用程序上下文中),SchemaLink 用于服务器在本地可用时,我们可以将架构导入与服务器端项目相同的源,例如您的示例 sn-p。

    使用一个或另一个有什么好处吗?

    它们适用于不同的用例,虽然没有什么能阻止您在服务器上对同一服务器上的端点(例如本地主机)进行 HTTP 调用,但使用模式链接查询本地模式可能会更好,具体取决于项目的架构(GraphQL 服务器是否部署到架构在本地不可用的外部主机?等)

    它们也可以同时使用,例如HttpLink 用于浏览器端,SchemaLink 用于同一 React 应用程序的服务器端渲染。

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      • 2015-03-26
      • 2013-08-19
      相关资源
      最近更新 更多