PostGraphile实战-概述

PostGraphile 是一个可以根据数据库结构生成 GraphQL 接口的工具。 它的自动化程度非常高,实现了表结构、关系、限制、访问权限等的自动映射,能有效提高服务端接口的开发效率。尤其是对于不和第三方对接的系统,甚至可以做到直接免除所有后端开发工作。

我在工作中使用了 PostGraphile,并取得了一定的成功,于是希望将这个好东西推荐给大家。 这里,我想通过为一个待办事项服务搭建 GraphQL 接口的过程,来展示如何使用 PostGraphile 。 如果能引起你想试着用一下它的兴趣,我的目的就算达到了。

这里涉及的大多数内容,在 PostGraphile 的官方文档中其实都能找到,毕竟我也是照着官方文档来学习的。 只不过官方文档以功能为出发点,而我是顺着一个假想的项目需求来介绍。

我们将从一个单机版的待办事项应用开始,逐步改造成一个代办事项服务。 首先,我会介绍一个基于浏览器(SPA)的代办事项软件,事项被保存在浏览器中,不需要与服务器交互; 接着,我会把它改造成可以将数据保存在远程数据库中的联机系统,并在此过程中介绍 PostGraphile 的基本功能; 然后,将其从单用户系统扩展成多用户,引入账号和登录的概念,并在此过程中介绍 PostGraphile 的权限管理功能; 最后,进一步完善系统权限,让用户只能访问到自己的代办事项,并在此过程中介绍 PostgreSQL 的行级权限功能。

除了实现上述功能,我还将在整个过程中穿插自己使用时遇到的问题和解决方法,并在最后讨论一下与外部系统交互的解决方案。

严格来讲,PostGraphile 并不是将后端的工作自动消灭了,而是将后端开发过程中与数据库建设之间重复的工作给消灭了。 你需要更严谨的设计和管理数据库才能达到更高的自动化目标,这会迫使你花更多时间在数据库上面,而这些时间都不会白费,因为你会在完成接口服务的同时,得到了一个更健壮的数据库。