在现代应用开发中,API 是一个不可或缺的部分。传统的 RESTful API 尽管已经成为了业界 common sense,但其需要开发者自己维护路由、逻辑复杂度高等问题挑战。为了解决这些问题,Facebook 推出了 GraphQL。GraphQL 是一个强类型、灵活、高效的 API 查询语言。同时,一些新兴的 GraphQL 工具使得我们可以更加高效地开发、部署 GraphQL API。在这篇文章中,我们会介绍如何使用 PostgreSQL 和 Hasura 构建一个现代的应用,以及如何使用 GraphQL 让前后端的交互更加高效。
为什么要选择 PostgreSQL 和 Hasura
PostgreSQL 是一个强大的关系型数据库,拥有着非常强大的功能和极高的可扩展性。Hasura 是一个构建在 PostgreSQL 之上的 GraphQL 引擎,它将数据库中的表结构转化为 GraphQL schema,并自动生成对应的 GraphQL API,使得我们可以直接使用 GraphQL 查询和操作数据库,非常的方便和高效。
使用 PostgreSQL 和 Hasura 的好处在于:
- 非常高效:使用 GraphQL 查询语言,可以极大减少网络传输和数据库查询的次数,使得数据的处理速度更快。
- 极大的灵活性:GraphQL 提供了非常灵活的查询和操作方式,可以满足不同需求的 API 情景。
- 降低开发难度和成本:使用 Hasura 可以快速生成 GraphQL API 服务器,并且可以直接集成在现有的 PostgresQL 数据库中,降低了开发的复杂度和时间成本。
- 安全、可靠:Hasura 通过使用 PostgresQL 的权限系统来保证数据访问的安全性和可靠性。
如何使用 PostgreSQL 和 Hasura
安装和配置 PostgreSQL
为了使用 PostgreSQL,我们首先需要安装并配置它,可以从官方网站下载安装文件并安装。安装完成后,我们需要创建一个数据库并在其中创建对应的表结构,可以使用 PostgreSQL 的命令行工具,也可以使用各种管理工具如 pgAdmin、DBeaver 等。
安装和配置 Hasura
安装和配置 Hasura 也相当简单,可以直接通过 Docker 运行 Hasura GraphQL Engine,也可以将其部署在云服务器上。运行 Hasura 镜像之前,需要设置相应的环境变量来链接数据库,具体可以参考文档。
定义 Schema
在 Hasura 中,我们需要手动定义 GraphQL schema,来指定哪些数据库表可以暴露出来,并通过 GraphQL API 进行查询和操作。定义 schema 的方式非常简单,只需要在 Hasura 的管理界面中选择需要暴露的表,并设置相关的查询和操作方式即可。
在 schema 定义之后,我们将拥有一个自动生成的 GraphQL API,同时也可以根据需要修改定义的 schema。这样就可以非常方便地进行数据库的操作,而无需手动编写复杂的 SQL 语句了。
编写应用
有了自动生成的 GraphQL API,我们就可以开始编写应用了。在前端应用中,可以使用各种现代的 JavaScript 框架和库,如 React、Vue、Angular 等等,来进行数据的查询和操作。
在后端应用中,可以使用各种 GraphQL 工具和库,如 Apollo Server、graphql-yoga 等来构建 GraphQL API 服务器。同时,在使用 Hasura 的情况下,我们还可以直接把自动生成的 GraphQL API 集成在后端中,不需要编写复杂的逻辑代码,只需要调用相应的 API 即可。
示例代码
下面是一个简单的示例代码,展示了如何在 React 应用中使用 GraphQL 操作 PostgresQL 数据库。这里我们使用的是 React Hooks 和 Apollo Client:
-- -------------------- ---- ------- ----- --------- - ---- ----- -------- - ----- - -- ---- ----- ----- - - -- ----- -------- - ---- -------- -------------- -------- ------- -------- ------- -------- - ------------------------ - ----- ------ ------ ------- ------ ------ -- - -- ---- ----- ----- - - -- -------- ----- - ----- ------- --------- - ------------- ----- - -------- ------ ---- - - -------------------- ----- --------- - --------------------- - ------------- - ----- - ----------------- ------- - -- - -------------- ------- - ------------------- - --- - ----- ----------- - --------------------- ----- -------- --------- ---- -------- ------- -- ----- - -- - -- --- ------ ------------------ ------------- -- -- --- -- --- -------- ------------------- - ----------------------- ----- ---- - ------------- --------- ---------- - ----- ------------------------- ------ -------------------------- ------ -------------------------- -- --- ------------- - ------------ -- - -- ----- -- ----------- - --------------------- - -- --------- ------- -- --------- - ------ ------------------ - -- ------- - ------ -------- ------- - ------ - -- -------------- ---- ----------------- -- - --- -------------- ------ ------------- -------- --------------- --------- ---------------- --------- ---------------- ----- --- ----- ----- ------------------------ ------- --------- ------ ---------------------------- ------ ----------- --------- ----------- -------- -- --- -- ------ ------------------------------ ------ ------------ ---------- ------------ -------- -- --- -- ------ ------------------------------ ------ ----------- ---------- ------------ -------- -- --- -- ------- ----------------- ------------- ------- --- -- -展开代码
总结
在这篇文章中,我们介绍了使用 PostgreSQL 和 Hasura 构建现代应用的过程。使用 GraphQL API 不仅提高了开发效率和数据处理的能力,同时也保障了数据的安全性和可靠性。我们还提供了一个简单的示例代码来展示如何在 React 应用中使用 GraphQL 操作 PostgresQL 数据库。
总之,使用 PostgreSQL 和 Hasura 构建应用可以带来更好的开发体验、更高的效率、更好的数据安全性和可靠性,是一个现代化的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/658fff10eb4cecbf2d588c48