作为Java后端开发,我们在开发接口时经常需要编写Controller、Service、Dao一堆代码,那有没有什么工具可以直接根据数据库生成接口,无需这些代码呢?今天给大家分享一款腾讯开源的后端开发神器APIJSON,可以零代码实现后端接口,希望对你有所帮助!

简介

  APIJSON是腾讯开源的实时零代码、全功能、强安全ORM库,为各种增删改查提供了完全自动化的万能通用接口,使用它能简化开发流程,缩短开发周期,目前在Github上已有17k+star。

  APIJSON主要具有如下特性:

  • 提供了万能通用的后端接口,只需创建好数据库表,即可自动实现对应接口。
  • 能零代码实现增删改查、各种跨库连表、JOIN嵌套子查询等都能支持。
  • 能自动生成文档,无需花费多余精力去维护。
  • 能自动校验权限、管理版本、防SQL注入。
  • 能定制返回JSON的数据和结构。

      下面是使用APIJSON开发后端接口的效果图:

      腾讯出品:后端开发的“零代码”神器来了!准备

      在使用APIJSON之前,我们需要先下载它的示例项目APIJSON-Demo,这里以基于Spring Boot的后端项目为例。

  • 首先下载APIJSON-Demo项目的源码,下载地址:

      腾讯出品:后端开发的“零代码”神器来了!

  • 下载完成后进行解压,然后将APIJSONDemo这个模块导入到IDEA中;

      腾讯出品:后端开发的“零代码”神器来了!

  • 然后在MySQL数据库中创建一个数据库apijson_sys,用于存放APIJSON所需的数据库表,该表在项目的MySQL/single目录下;

      腾讯出品:后端开发的“零代码”神器来了!

  • 导入成功后,数据库中将包含如下表;

      腾讯出品:后端开发的“零代码”神器来了!

  • 接下来需要修改DemoSQLConfig类中的数据库连接配置,包括DEFAULT_SCHEMA、DBVersion、DBUri、DBAccount、DBPassword,修改完成后运行启动类DemoApplication启动项目。

      public class DemoSQLConfig extends APIJSONSQLConfig {static { DEFAULT_DATABASE = DATABASE_MYSQL; // TODO 默认数据库类型,改成你自己的 DEFAULT_SCHEMA = "apijson_sys"; // TODO 默认数据库名/模式,改成你自己的,默认情况是 MySQL: sys, PostgreSQL: public, SQL Server: dbo, 表名映射,隐藏真实表名,对安全要求很高的表可以这么做 TABLE_KEY_MAP.put("User", "apijson_user"); TABLE_KEY_MAP.put("Privacy", "apijson_privacy"); }@Overridepublic String gainDBVersion() {return"5.7.19"; // "8.0.11"; // TODO 改成你自己的 MySQL 或 PostgreSQL 数据库版本号 // MYSQL 8 和 7 使用的 JDBC 配置不一样 }@JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息@Overridepublic String gainDBUri() {return"jdbc:"; // TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 }@JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息@Overridepublic String gainDBAccount() {return"root"; // TODO 改成你自己的 }@JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息@Overridepublic String gainDBPassword() {return"root"; // TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 "" }}使用

      APIJSON运行准备做完之后,我们就使用它来开发后端接口了,这里以mall电商实战项目中的商品品牌管理功能为例。

  • 首先我们创建一个业务数据库mall_api,和APIJSON的系统数据库apijson_sys区分开来,然后添加商品品牌表pms_brand,表结构如下;

      CREATE TABLE`pms_brand` (`id`bigint(20) NOTNULL AUTO_INCREMENT,`name`varchar(64) DEFAULTNULL,`first_letter`varchar(8) DEFAULTNULLCOMMENT'首字母',`sort`int(11) DEFAULTNULL,`factory_status`int(1) DEFAULTNULLCOMMENT'是否为品牌制造商:0->不是;1->是',`show_status`int(1) DEFAULTNULL,`product_count`int(11) DEFAULTNULLCOMMENT'产品数量',`product_comment_count`int(11) DEFAULTNULLCOMMENT'产品评论数量',`logo`varchar(255) DEFAULTNULLCOMMENT'品牌logo',`big_pic`varchar(255) DEFAULTNULLCOMMENT'专区大图',`brand_story`textCOMMENT'品牌故事', PRIMARY KEY (`id`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=1747297739014DEFAULTCHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='品牌表';

  • 然后在access表中添加一条记录用于注册pms_brand表,还给它取了个别名PmsBrand;

      INSERT INTO `apijson_sys`.`access` (`id`, `debug`, `schema`, `name`, `alias`, `get`, `head`, `gets`, `heads`, `post`, `put`, `delete`, `date`, `detail`) VALUES (NULL, 0, 'mall_api', 'pms_brand', 'PmsBrand', '[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"OWNER\", \"ADMIN\"]', '[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]', '[\"OWNER\", \"ADMIN\"]', '2018-11-29 00:29:19', NULL);

  • 接下来我们就会拥有PmsBrand表的万能通用接口了,首先我们来实现根据ID查询商品品牌的接口,请求参数如下;

      { "PmsBrand": { "id": 6 }}

  • 请求接口后返回结果如下;

      腾讯出品:后端开发的“零代码”神器来了!

  • 再来实现一个新增商品品牌的接口,请求参数如下;

      { "PmsBrand": { "name": "新增品牌", "first_letter": "M", "sort": 500, "factory_status": 1, "show_status": 1, "product_count": 100, "product_comment_count": 100, "logo": "", "big_pic": "", "brand_story": "新增品牌的故事" }}

  • 请求接口后返回结果如下;

      腾讯出品:后端开发的“零代码”神器来了!

  • 再来实现一个修改商品品牌的接口,请求参数如下;

      { "PmsBrand": { "id": "1747300320185", "name": "修改品牌", "brand_story": "修改新增品牌的故事" }}

  • 请求接口后返回结果如下;

      腾讯出品:后端开发的“零代码”神器来了!

  • 再来实现一个删除商品品牌的接口,请求参数如下;

      { "PmsBrand": { "id": 1747300320185 }}

  • 请求接口后返回结果如下;

      腾讯出品:后端开发的“零代码”神器来了!

  • 最后再实现一个分页查询商品品牌并按sort字段降序排列的接口,请求参数如下;

      { "[]": { "PmsBrand": { "@column": "id,name,first_letter,brand_story,sort", "@order": "sort-" }, "page": 0, "count": 5 }}

  • 请求接口后返回结果如下。

      腾讯出品:后端开发的“零代码”神器来了!总结

      今天带大家体验了一把APIJSON的使用,只要你创建好数据库表,APIJSON真的可以自动生成后端API接口,当然APIJSON的功能不止于此,感兴趣的小伙伴可以尝试下它!

      来源: