为什么使用 Apollo GraphQL Server 进行 Express(或其他集成)?
Why Express (or other integration) with Apollo GraphQL Sever?
我很难理解 Express(或 Koa、Hapi 等)与 Apollo GraphQL 服务器集成的附加值。
我看到它可以在单机模式下很好地工作(示例:https://medium.com/codingthesmartway-com-blog/apollo-server-2-introduction-efc4026f5654)。
在什么情况下我们应该集成(或不集成)使用它?什么应该推动这个决定?
如果您只需要一个 GraphQL 端点,那么通常首选使用独立库 (apollo-server
),因为要编写的样板文件会更少(订阅、文件上传等功能可以在没有附加配置)。但是,许多应用程序需要额外的功能,而不仅仅是公开单个 API 端点。示例包括:
- 网络钩子
- OAuth 回调
- 会话管理
- Cookie 解析
- CSRF 防护
- 监控或记录请求
- 速率限制
- 地理围栏
- 提供静态内容
- 服务器端渲染
如果您的应用程序需要这种功能,那么您需要使用 Express 等 HTTP 框架,然后使用适当的集成库(即 apollo-server-express
)。
Apollo Server 还包括无服务器解决方案 AWS Lambda 的集成。例如,如果您想使用无服务器以获得更好的可扩展性或消除系统管理成本,那么您还需要使用这些集成之一。
我很难理解 Express(或 Koa、Hapi 等)与 Apollo GraphQL 服务器集成的附加值。
我看到它可以在单机模式下很好地工作(示例:https://medium.com/codingthesmartway-com-blog/apollo-server-2-introduction-efc4026f5654)。
在什么情况下我们应该集成(或不集成)使用它?什么应该推动这个决定?
如果您只需要一个 GraphQL 端点,那么通常首选使用独立库 (apollo-server
),因为要编写的样板文件会更少(订阅、文件上传等功能可以在没有附加配置)。但是,许多应用程序需要额外的功能,而不仅仅是公开单个 API 端点。示例包括:
- 网络钩子
- OAuth 回调
- 会话管理
- Cookie 解析
- CSRF 防护
- 监控或记录请求
- 速率限制
- 地理围栏
- 提供静态内容
- 服务器端渲染
如果您的应用程序需要这种功能,那么您需要使用 Express 等 HTTP 框架,然后使用适当的集成库(即 apollo-server-express
)。
Apollo Server 还包括无服务器解决方案 AWS Lambda 的集成。例如,如果您想使用无服务器以获得更好的可扩展性或消除系统管理成本,那么您还需要使用这些集成之一。