apollo server 和 express-graphql 有什么区别

Meh*_*lal 17 node.js graphql apollo-server

我想构建一个应用程序并推荐使用 GraphQl 作为 API,

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

apollo server vs express-graphql
Run Code Online (Sandbox Code Playgroud)

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

jmu*_*rzy 10

以下是apollo-server 自述文件中现已删除的部分,比较apollo-serverexpress-graphql

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

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

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

与比较express-graphql

Apollo Server 和 Apollo Server 都是 Node.js 的 GraphQL 服务器,构建在 参考实现express-graphql之上,但有一些关键区别:graphql-js

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

应用程序/graphql 请求

express-graphql支持请求的 Content-Type,这是仅将查询部分作为文本发送的请求application/graphql的替代方案。就像我们用来解析apollo-server 请求的application/json方式一样 ,我们可以使用一个额外的步骤来解析请求。这是 Express 的示例:bodyParser.jsonapplication/jsonbodyParser.textapplication/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); ```
Run Code Online (Sandbox Code Playgroud)


Ble*_*ing 5

Express-GraphQL是一个中间件,可以使用 Express 或任何支持中间件的 Web 框架快速设置 GraphQL Server。

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

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

  • Express-GraphQL 不是一个经过修改的 Express 服务器来处理 GraphQL 请求。它是一个中间件,可以使用 Express 或任何支持中间件的 Web 框架快速设置 GraphQL 服务器:参考:https://www.npmjs.com/package/express-graphql (4认同)