不到三分钟做出全套复杂的graphQL后端API
发布于 2 个月前 作者 cheunghy 1211 次浏览 来自 分享

graphQL是Facebook开发的新一代的API,能够在一个请求中,处理原本RESTful的多个请求,所需字段由前端自由定义。在开发中,大大简化了前后端通信和协调的过程,提升开发效率。

如果没尝试过graphQL,现在是时候学一下了。

Amur是一个类似rails scaffold那样的脚手架工具,不同的是,它为graphQL API而生,不会生成前端的页面,拥有更强大的生成机制,支持更多数据类型,以及mongoose那种嵌套的数据库行的结构。

安装amur

npm install -g amur

生成一个amur后端

amur app my-new-app
cd my-new-app

生成API的基本命令格式

amur resource Coupon code:String title:String:Untitled user:User
amur resource User coupons:[Coupon]:user

这个格式几乎跟rails generator是一样的。不同的是,第二个冒号后面代表默认值(非引用类型),外链(引用类型)。 amur内置多种格式,String,Enum,Int,Number,Float,Boolean,Date。其中Number与Int同。其他类型会被amur理解成为引用类型。类型上面加[一对中括号],将类型变为这种类型的数组。

比起上述跟rails generator几乎一样的简单的语法,amur支持更多简化开发的特性。其中一个是类型修饰符。 比如,我们有一个用户表,用户有邮箱(必填,不能重复),性别(是个枚举),年龄(最小值18的整数),我们就可以使用以下命令生成model和API。

amur resource User 'email:String!$' 'gender:Enum{male,female}' 'age:Int>=18'

这里边,!意味着必填,$意味着唯一,>=是最小值。Enum{…}是Enum类型定义的一部分,并不是修饰符。其余的修饰符包括^ index,<=最大值,/…/匹配正则。

amur支持嵌套的类型

amur resource Address line:{ one:String two:String } country:String

使用{或[{作为类型定义,将余下输入放进嵌套结构内,使用}和}]可以跳出结构。可以无限嵌套。

还有更多功能介绍不完,文档在这里:https://github.com/zhangkaiyulw/amur

回到顶部