【发布时间】:2020-02-23 20:54:03
【问题描述】:
我想构建一个应用程序,建议使用 GraphQl for API,
我不确定要选择哪个平台以及有什么区别。
apollo server vs express-graphql
我也需要在项目中使用 TypeScript。 任何好的想法将不胜感激。
【问题讨论】:
标签: node.js graphql apollo-server
我想构建一个应用程序,建议使用 GraphQl for API,
我不确定要选择哪个平台以及有什么区别。
apollo server vs express-graphql
我也需要在项目中使用 TypeScript。 任何好的想法将不胜感激。
【问题讨论】:
标签: node.js graphql apollo-server
【讨论】:
下面是来自 apollo-server README 的 the now deleted section 比较 apollo-server 和 express-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-jsreference 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/graphqlContent-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); ```
【讨论】:
Express-GraphQL 是一个中间件,可以通过 Express 或任何支持中间件的网络框架快速设置 GraphQL 服务器。
Apollo-server 是一个位于现有节点服务器上并解析 GraphQL 查询的包。 (与 express-graphql 非常相似)可以与 express、Koa 等一起使用。
我的建议是使用 Graphql-yoga,因为它是使用 apollo-server 和 express-graphql 构建的。它由Prisma Team 构建和维护。
【讨论】: