APIJSAON(一:入门篇)

背景

由于传统开发在开发过程中各种奇葩缩写,混乱的命名,文档过时与接口不同步,数据类型不稳定或者随意改变,几百甚至上千个混乱的状态码,前端与后端的各种扯皮撕逼,整个开发流程繁琐,开发周期长等等原因,由此APIJSON的出现也就应运而生了。

一、APIJSAON是什么?

首先是看名字APIJSON,API是说这个项目是属于接口开发的项目,JSON是指传输数据格式是JSON格式,换句话说,使用这个项目作为后端的支持的话,是不需要对每个表写增删改查等接口的,只需在该项目连接的数据里进行表的创建,以及配置接口权限即可。无需进行过多的开发,哪怕是要改结构也仅仅只需要修改表字段而已。想想仅仅是部署一个后端项目,现在需要些的接口就基本写好了,直接调用就行了。

二、安装步骤

1.环境配置

DK: 1.8+

MAVEN: 3.5+

Mysql:5.7

JetBrains IntelliJ IDEA 2019.2

2.下载项目

使用git clone下载:

git clone https://github.com/APIJSON/APIJSON-Demo.git

或者APIJSON项目地址(https://github.com/APIJSON/AP...)下载

3.导入项目

Idea或者Eclipse 导入:

顶部菜单 File > Import > Maven > Existing Maven Projects > Next > Browse

选择项目所在目录/APIJSON-Demo-Master/APIJSON-Java-Server/APIJSONBoot

下载依赖,当报依赖错误的时候,将同目录下的 libs 里面的 jar 包添加到 Build Path 中

4.错误解决

有可能 pom.xml 会报错,例如:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

这段代码中的这一句提示错误:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

还有可能出现的错误:

添加依赖的version即可解决。

修改步骤:

  • 请修改 Eclipse 中的 Maven 镜像地址,以便更快下载或者更新,具体方法自行百度;
  • 打开Eclipse->Windows->Preferences->Maven->Installations->add 这个按钮用于指定
    maven 的安装目录,不建议使用 eclipse 自带的,需要自己设置。
  • 打开Eclipse->Windows->Preferences->Maven->User Settings 这是指定 setting.xml
    的位置,同时导向自己的本地 maven 仓库。

三、数据库

1,配置

需要在 DemoSQLConfig,40-61 行,改为自己数据库对应的链接

2,导入

导入 APIJSON-Demo/MySQL 下的 SQL 脚本:

四、新增接口

1,后台添加数据

CREATE TABLE `b_stone` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `cost` int(10) NULL COMMENT '成本',
  `price` int(10) NULL COMMENT '卖价',
  `length` int(10) NULL,
  `width`  int(10) NULL,
  `height` int(10) NULL,
  `weight` float(8,1) NULL,
  `creationdate` datetime default CURRENT_TIMESTAMP COMMENT '创建时间',
  `modifydate` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `modifier` varchar(80) NULL,
  PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

2,在 Model 中添加对象并配置权限

项目的 model 目录下,新增一个类

package apijson.demo.server.model;

import zuo.biao.apijson.MethodAccess;

@MethodAccess
public class Stone {
}

注解@MethodAccess的配置,可以参考其他类

由于我们的类名和数据库表名不一致,需要注册一下。如果一样就不需要了。

设置数据库的实际表名DemoSQLConfig,38 行

//表名映射,隐藏真实表名,对安全要求很高的表可以这么做
    static {
        TABLE_KEY_MAP.put(User.class.getSimpleName(), "apijson_user");
        TABLE_KEY_MAP.put(Privacy.class.getSimpleName(), "apijson_privacy");
        TABLE_KEY_MAP.put(Stone.class.getSimpleName(), "b_stone"); // <--这一句
    }

注册权限是必须的,这样程序才能使用你配置的类权限去管理你的接口

DemoSQLConfig,48 行

static { //注册权限
        ACCESS_MAP.put(User.class.getSimpleName(), getAccessMap(User.class.getAnnotation(MethodAccess.class)));
....
        ACCESS_MAP.put(Stone.class.getSimpleName(), getAccessMap(Stone.class.getAnnotation(MethodAccess.class)));
    }

3,请求参数校验 Request 表配置

可这样设置 structure 字段来配置自动校验请求 JSON 参数:

"VERIFY":{
  "type{}":[0,1,2]
}

就能校验 type 的值是不是 0,1,2中的一个。
还有

"VERIFY": { "money&{}":">0,<=10000" }              //自动验证是否 money>0 & money<=10000
"TYPE": { "balance": "Double" }                    //自动验证balance类型是否为Double
"UNIQUE": "phone"                                  //强制phone的值为数据库中没有的
"NECESSARY": "id,name"                             //强制传id,name两个字段
"DISALLOW": "balance"                              //禁止传balance字段
"INSERT": { "@role": "OWNER" }                     //如果没传@role就自动添加
"UPDATE": { "id@": "User/id" }                     //强制放入键值对

全部操作符见 Operation.java (opens new window)的注释

4,启动项目

5,请求接口测试


至此,一个开挂的零代码编程项目就成功运行了。

03-05 21:57