认识APIJSON

APIJSON是一种JSON传输结构协议。客户端可以定义任何JSON结构去向服务端发起请求,服务端就会返回对应结构的JSON字符串,所求即所得。一次请求任意结构任意数据,方便灵活,不需要专门接口或多次请求。支持增删改查、模糊搜索、远程函数调用等。还能去除重复数据,节省流量提高速度!从此HTTP传输JSON数据没有接口,更不需要文档!

上面这段话的介绍也很明确了,要是以我多次使用过的感受来说:搭建好APIJSON,后台开发已经结束


环境准备

初次接触,我们先来体验一番这个“神器”,so,将官网Demo中的数据库、项目运行到本机即可(注意项目正确配置数据库连接,可按官网教程进行)。

如果我们以:

{ "Moment": { "id":12 } }

正确的请求到了http://localhost:8080/get,证明我们的环境OK。

实现自己的表增删改查

1、数据库表创建

2、创建Model,我们应该这么理解:在程序中要有一个类指向数据库表或者说表示某个表,虽然它可能仅仅是个空的类!然而阅读源码后会发现实体类在项目中真的只是用来告诉程序操作的目标表是谁。

/**
 * 创建对象只是为了与数据表建立关系
 * 如果实体里加点字段,完全不影响我们的 API JSON的数据库操作
 */
@MethodAccess(
        POST = {ADMIN}  //@MethodAccess决定了请求方式的权限,在这POST只有ADMIN角色才可使用
)
public class SysUser { }

3、创建类--表映射关系,如果类名和数据库名一致,方可忽略。(DemoSQLConfig)

static {
        //表名称映射
        TABLE_KEY_MAP.put(SysUser.class.getSimpleName(),"sys_user");
 }

4、必要的权限注册,这样程序才能使用你配置的类权限去管理你的接口(DemoVerifier)

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

5、框架未确认开放性的操作,例如删除,我们需要到Request表中进行配置,才可以正常的访问。

删除就实现啦:

在线根据json schema 生成json_接口文档

自定义登陆校验

userId是区别是否登录的唯一标识,那么我们应该这样自定义登陆校验:

框架原源码:(visitorId是userid赋值的,可见userId是区分登录状态的关键)

public void verifyLogin() throws Exception {
		//未登录没有权限操作
		if (visitorId == null) {
			throw new NotLoggedInException("未登录,请登录后再操作!");
		}

		if (visitorId instanceof Number) {
			if (((Number) visitorId).longValue() <= 0) {
				throw new NotLoggedInException("未登录,请登录后再操作!");
			}
		} 
        ......
}

自定义的话,我们需要在AbstractVerifier实现类中重写verifyLogin(),自定义我们登录认证逻辑!

@Override
	public void verifyLogin() throws Exception {
		//重写父级
		System.err.println("重写了,我重写了!再也不用担心登录问题啦~~~~~~~~~~~~~~~~~~~~~~~~");
	}

自定义其他

如果自定义其他的逻辑,我们只需要重写框架内的抽象类方法

一个jar包开始搭建自己的APIJSON

数据库:

在线根据json schema 生成json_java_02

1、创建数据库,导入APIJSON基本的表。

2、创建Model,定制自己的@MethodAccess。并注册权限、映射表名。

3、重写AbstractSQLConfig、AbstractParser、AbstractObjectParser、AbstractSQLExecutor、AbstractVerifier、RemoteFunction,实现自己的逻辑。(过程很枯燥,会出问题,实现后你会对APIJSON有个新理解)