xmysql:可为MySql生成REST API的神奇命令

翻译 2017年11月08日 16:46:56

原文:xmysql: one command to generate REST APIs for any MySql database
作者:o1lab
翻译:Vincent

为什么用这个命令?

为MySql数据库快速生成REST API,而且还不遵循诸如rails、django等框架的约定,这可能是一种不太受欢迎的冒险行为。



但是也正因为如此。

该命令的功能都是由node packages提供支持的:(express, mysql) => { xmysql }

安装与用法

npm install -g xmysql

xmysql -h localhost -u mysqlUsername -p mysqlPassword -d databaseName

http://localhost:3000

这样就可以了。

特点

  • 只要是MySql数据库,就都可以生成API
  • 无论主键,外键,表等的命名约定如何,均可提供API
  • 增删改查:日常操作
  • 支持复合主键
  • 分页
  • 排序
  • 字段
  • 关系表
  • 可运行动态查询

可以使用像Postman 或者类似的HTTP客户端工具来调用REST API。

如果你的系统上面还没有这些的话,请先下载nodemysqlsetup mysql),示例数据库

根路径

直接访问根路径(localhost:3000/)会返回每张表中schema的所有REST API。

CRUD APIs 日常操作

  • GET /api/:tableName
  • POST /api/:tableName
  • GET /api/:tableName/:id
  • PUT /api/:tableName/:id
  • GET /api/:tableName/count
  • GET /api/:tableName/exists
  • GET /api/:parentTable/:id/:childTable
  • DELETE /api/:tableName/:id
  • POST /dynamic

其它的API

  • GET /api/:tableName/describe
  • GET /api/tables

支持复合主键

_(三个下划线)

/api/payments/103___JM555205

_:如果有多个主键 - 如图所示,用三个下划线分隔就可以了

分页

_p & _size

前者表示分多少页,后者表示响应行的大小。

默认情况下,每张表上面的GET请求会返回20条记录,最多100条。

/api/payments?_size=50

/api/payments?_p=2

/api/payments?_p=2&_size=50

排序

_sort
/api/payments?_sort=column1

上述命令表示按column1升序排列

/api/payments?_sort=-column1

上述命令表示按column1降序排列

/api/payments?_sort=column1,-column2

上述命令表示按column1升序排列,再按column2降序排列

字段

/api/payments?_fields=customerNumber,checkNumber

上述命令表示只得到每条记录的customerNumber和checkNumber这两个字段

/api/payments?_fields=-checkNumber

上述命令表示获取每行记录中除checkNumber以外的所有字段

运行动态查询

在数据库上面可以通过将方法POST到localhost:3000/dynamic该URL上面就可以运行动态查询了。

这仅支持-h localhost或-h 127.0.0.1选项中才能启用。

Post的body里面有两个字段:query和params。

query:SQL查询或SQL prepared查询(带??和?的)

params:SQL prepared查询的参数

POST /dynamic   

{
    "query": "select * from ?? limit 1,20",
    "params": ["customers"]
}

关系表

xmysql自动识别外键关系并提供GET api。

/api/customers/103/payments

例如:Customers是父表,payments是子表。API调用将会返回103号客户的所有付款记录。

什么时候应该使用

  • 只需要REST API,而不需要任何麻烦的MySql数据库。
  • 正在学习新的前端框架,而且MySql数据库需要使用REST API。
  • 正在做demo或者黑客等工作

什么时候不该不用

  • 如果需要的是一个完整的MVC框架,ACL,授权等等——而并不是这个。
  • 在”什么时候应该使用”章节里面没有提到的场景都不要用

IntelliJ IDEA + Tomcat + RestFul + Mysql打造属于自己的服务器

IntelliJ IDEA + Tomcat + RestFul + Mysql打造属于自己的服务器
  • wuyinlei
  • wuyinlei
  • 2017年08月15日 22:05
  • 776

为MySql生成REST API命令

该命令的功能都是由node packages提供支持的:(express, mysql) => { xmysql } 安装与用法 npm install -g xmysql xmysql...
  • qq_33580952
  • qq_33580952
  • 2017年11月09日 12:08
  • 178

Spring Boot、Mybatis框架整合开发Java RESTful Web Service

Spring Boot Mybatis 框架整合开发Java Web Restful服务参考资料 Spring Boot 官方参考指南 Spring Boot 中文参考指南 Mybatis 官方中文文...
  • daixiaodong2012
  • daixiaodong2012
  • 2016年02月06日 22:47
  • 6976

MySql唯一ID生成

前阵子,一直在折腾阿里云。写的一些文章也放到自己的wordpress博客上了。但自己前阵子在做系统更换操作的时候未备份磁盘,大部分心血付诸东流。真是一个悲伤的故事。现在决定用.NET搞搞自己的博客。正...
  • shenge321
  • shenge321
  • 2014年12月18日 21:55
  • 4662

MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)

测试缘由  一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了...
  • mchdba
  • mchdba
  • 2016年08月27日 17:44
  • 25279

mysql全局唯一ID生成方案(一)

一旦数据库被切分到多个物理结点上,我们将不能再依赖数据库自身的主键生成机制。一方面,某个分区数据库自生成的ID无法保证在全局上是唯一的;另一方面,应用程序在插入数据之前需要先获得ID,以便进行SQL路...
  • longjef
  • longjef
  • 2016年11月10日 16:50
  • 9872

mysql中不清除表里的数据重新设置自增的id的方法

设置主键id自增的数据库表删除数据后,自增id不会自动重新计算 想要重新设置自增的id可以用如下命令alter table table_name AUTO_INCREMENT=10;...
  • lj402159806
  • lj402159806
  • 2017年01月17日 13:54
  • 4450

mysql全局唯一ID生成方案(二)

MySQL数据表结构中,一般情况下,都会定义一个具有‘AUTO_INCREMENT’扩展属性的‘ID’字段,以确保数据表的每一条记录都可以用这个ID唯一确定; 随着数据的不断扩张,为了提高数据库...
  • longjef
  • longjef
  • 2016年11月10日 16:52
  • 3080

spring+springmvc+mybatis+restful+mysql

  • 2018年01月09日 15:04
  • 50.56MB
  • 下载

spring+mybatis+restful的搭建

近期需要写一个android项目,服务端由我负责,打算使用spring+mybatis+restful搭建。搭建过程如下,具体细节日后有时间再整理。 1、新建一个Dynamic web项目,Ecli...
  • lwqxmu
  • lwqxmu
  • 2015年05月18日 10:50
  • 1965
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:xmysql:可为MySql生成REST API的神奇命令
举报原因:
原因补充:

(最多只允许输入30个字)