Hasura与Django结合实现即时实时GraphQL API和身份验证模型

需积分: 32 0 下载量 193 浏览量 更新于2024-11-04 收藏 1.71MB ZIP 举报
资源摘要信息: "hasura-django-starter" 是一个项目启动器,它的主要功能是将 Hasura 的即时、实时 GraphQL API 与 Django 的内置身份验证模型和跨两个服务扩展逻辑的能力结合起来。这个工具的目标是为开发者提供一个便捷的起点,以快速构建和扩展功能强大的应用。 ### 知识点详解: #### 1. Hasura 和 GraphQL - **Hasura** 是一个开源的引擎,可以即时为 Postgres 数据库生成 GraphQL API,提供快速、实时的数据查询和变更能力。它允许开发者从数据库模式中自动生成安全的 GraphQL API,支持实时数据处理和复杂的查询。 - **GraphQL** 是一种由 Facebook 开发的用于 API 的查询语言,它允许客户端精确地指定所需的数据结构,并提供了强大的类型系统,可以作为单个 API 端点处理各种复杂的数据需求。 #### 2. Django 内置身份验证模型 - **Django** 是一个高级的 Python Web 框架,它鼓励快速开发和干净、实用的设计。它内置了用户认证系统,提供了创建用户账户、用户组和权限以及密码管理等功能。 - **Django 内置身份验证模型** 提供了用户注册、登录以及密码重置等基本功能,并支持使用 JWT(JSON Web Tokens)进行状态无关的认证。 #### 3. JWT 令牌 - **JWT(JSON Web Tokens)** 是一种紧凑的、URL安全的方式,用于表示要在两个方之间以 JSON 对象的形式传递信息。在 Django 中使用 JWT,可以通过 Simple-JWT 这样的库来管理令牌的生成和验证。 #### 4. Svelte 客户端示例 - **Svelte** 是一个构建用户界面的前端框架,通过其独特的编译时处理,将应用转换成高效的基本的 JavaScript。在 hasura-django-starter 中增加了 Svelte 客户端的示例,这表明开发者可以利用 Svelte 构建客户端应用,并与 GraphQL API 进行交互。 #### 5. 项目集成特性 - **数据库管理界面**:Hasura 自带的数据库管理界面使得对数据库的管理更加直观和便捷。 - **行级权限管理系统**:可以对数据库表中的每一行数据进行权限控制,确保只有授权用户才能访问特定的数据行。 - **事件系统**:支持通过 Django 触发事件,例如发送新用户注册和忘记密码的电子邮件,扩展了系统功能。 - **操作(Actions)**:提供了在 Hasura 和 Django 之间实现高级非 CRUD(创建、读取、更新、删除)逻辑的示例。 - **数据库/元数据迁移**:支持自动化迁移,以及容器化部署和应用迁移的能力。 #### 6. 技术栈整合 - **Django REST Framework**:虽然 hasura-django-starter 主要关注 GraphQL 和 Hasura,但 Django 的 REST 框架仍然可以作为扩展点,用于那些需要 RESTful API 的场景。 - **容器化**:该项目可能使用 Docker 或类似容器技术来确保开发、测试和生产环境的一致性,容器化还有助于简化部署流程。 #### 7. 开发工作流 - **即时 API**:Hasura 自动为数据库提供了一个即时可用的 GraphQL API,开发者无需编写额外代码。 - **实时更新**:Hasura 的实时数据能力意味着客户端可以实时接收到数据库变更的通知。 - **可扩展性**:通过 Hasura 与 Django 的结合,可以方便地添加自定义逻辑和扩展服务功能。 #### 8. 标签解析 - **graphql**:标签确认了项目使用 GraphQL 作为 API 技术。 - **jwt**:标识了项目涉及使用 JWT 令牌进行身份验证。 - **django**:表明 Django 框架是该项目的重要组成部分。 - **authentication**:强调了身份验证是项目的关键功能。 - **hasura**:项目的中心部分,Hasura 引擎提供了强大的数据处理能力。 - **Svelte**:表示项目支持 Svelte 框架来构建前端界面。 通过 hasura-django-starter,开发者可以利用上述所有技术和框架,结合自己的业务逻辑,快速构建出一个功能完整的现代 Web 应用。
2021-02-18 上传