【问题标题】:What is the difference between apollo server and express-graphqlapollo server 和 express-graphql 有什么区别
【发布时间】:2020-02-23 20:54:03
【问题描述】:

我想构建一个应用程序,建议使用 GraphQl for API,

我不确定要选择哪个平台以及有什么区别。

apollo server vs express-graphql

我也需要在项目中使用 TypeScript。 任何好的想法将不胜感激。

【问题讨论】:

    标签: node.js graphql apollo-server


    【解决方案1】:

    【讨论】:

    • “两者几乎相同。”。它们有何不同?
    • 链接没有提供任何信息
    • 投反对票,因为这不能回答问题
    【解决方案2】:

    下面是来自 apollo-server README 的 the now deleted section 比较 apollo-serverexpress-graphql

    请注意,其中一些参数不再适用,例如express-grapqhl 现在是用 TypeScript 编写的。因此从 README 中删除了这一部分。

    一个观察结果是 apollo-server 过于臃肿,并且慢慢地显示出缺乏维护。如果我今天要选择一个,我会选择express-graphql。但这是个人喜好,您应该自己做尽职调查。

    还有一个社区维护的 Koa 端口 express-graphql,称为 koa-graphql。使用 express-graphql 或 koa-graphql,结合 envelop 之类的东西,您可以实现 Apollo“生态系统”以更加模块化的方式提供的一切,甚至更多。

    express-graphql比较

    Apollo 服务器和 express-graphql 是 Node.js 的 GraphQL 服务器,建立在 graphql-js reference implementation 之上,但是 有几个关键区别:

    • express-graphql 与 Express 和 Connect 配合使用,Apollo Server 支持 Express、Connect、Hapi、Koa 和 Restify。
    • express-graphql 相比,Apollo Server 的界面更简单,并且只支持一种传递查询的方式。
    • Apollo Server 分离服务 GraphiQL(一个浏览器内的 IDE,用于 探索 GraphQL)从响应 GraphQL 请求。
    • express-graphql 包含解析 HTTP 请求正文的代码,Apollo Server 将其留给标准包,如 body-parser。
    • Apollo Server 包含一个 OperationStore,可轻松管理白名单。
    • Apollo Server 使用 TypeScript 构建。

    应用程序/graphql 请求

    express-graphql 支持 application/graphql Content-Type for 请求,这是 application/json 请求的替代方案 只有查询部分作为文本发送。与我们使用的方式相同 bodyParser.json 解析 application/json 请求 apollo-server,我们可以使用bodyParser.text 加上一个额外的步骤 为了也解析application/graphql请求。这是一个例子 快递:

    'body-parser'; import { graphqlExpress } from 'apollo-server-express';
    
    const myGraphQLSchema = // ... define or import your schema here!
    
    const helperMiddleware = [
        bodyParser.json(),
        bodyParser.text({ type: 'application/graphql' }),
        (req, res, next) => {
            if (req.is('application/graphql')) {
                req.body = { query: req.body };
            }
            next();
        } ];
    
    express()
        .use('/graphql', ...helperMiddleware, graphqlExpress({ schema: myGraphQLSchema }))
        .listen(3000); ```
    

    【讨论】:

      【解决方案3】:

      Express-GraphQL 是一个中间件,可以通过 Express 或任何支持中间件的网络框架快速设置 GraphQL 服务器。

      Apollo-server 是一个位于现有节点服务器上并解析 GraphQL 查询的包。 (与 express-graphql 非常相似)可以与 express、Koa 等一起使用。

      我的建议是使用 Graphql-yoga,因为它是使用 apollo-server 和 express-graphql 构建的。它由Prisma Team 构建和维护。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-24
      • 2018-11-20
      • 2020-12-20
      • 2021-06-24
      • 2019-09-01
      • 2010-09-12
      • 1970-01-01
      • 2020-11-26
      相关资源
      最近更新 更多