apijson简单使用
apijson简单使用
介绍
APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库。为简单的增删改查、复杂的查询、简单的事务操作 提供了完全自动化的万能 API。能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。适合中小型前后端分离的项目,尤其是 BaaS、Serverless、互联网创业项目和企业自用项目。
Gitee:https://gitee.com/Tencent/APIJSON
示例
Java端:https://gitee.com/greyzeng/api-json-boot
运行
准备数据库
DemoSQLConfig.java这个文件中提供了数据库的配置信息
需要配置:
- 数据库的Schema
- 数据库Version
- 数据库连接的URI
- 数据库的用户名密码
将/sql目录下的脚本文件导入数据库中。
增加依赖
将/libs目录下的jar包增加到项目的classpath中
启动项目
运行DemoApplication
测试
在Postman中新增一个POST请求,请求的URL是:
请求的Body是:
{
"Moment": {
"id": 12
}
}
返回的结果是:
{
"Moment": {
"id": 12,
"userId": 70793,
"date": "2017-02-08 16:06:11.0",
"content": "APIJSON,let interfaces and documents go to hell !",
"praiseUserIdList": [
70793,
93793,
82044,
82040,
82055,
90814,
38710,
82002,
82006,
1508072105320,
82001
],
"pictureList": [
"http://static.oschina.net/uploads/img/201604/22172508_eGDi.jpg",
"http://static.oschina.net/uploads/img/201604/22172507_rrZ5.jpg",
"https://camo.githubusercontent.com/788c0a7e11a4f5aadef3c886f028c79b4808613a/687474703a2f2f696d61676573323031352e636e626c6f67732e636f6d2f626c6f672f3636303036372f3230313630342f3636303036372d32303136303431343232343932353935372d313732303737333630382e6a7067",
"http://static.oschina.net/uploads/img/201604/22172507_Pz9Y.png",
"https://camo.githubusercontent.com/c98b1c86af136745cc4626c6ece830f76de9ee83/687474703a2f2f696d61676573323031352e636e626c6f67732e636f6d2f626c6f672f3636303036372f3230313630342f3636303036372d32303136303431343232343930383036362d313837323233393236352e6a7067",
"https://camo.githubusercontent.com/f513fa631bd780dc0ec3cf2663777e356dc3664f/687474703a2f2f696d61676573323031352e636e626c6f67732e636f6d2f626c6f672f3636303036372f3230313630342f3636303036372d32303136303431343232343733323232332d3337333933303233322e6a7067",
"https://camo.githubusercontent.com/c98b1c86af136745cc4626c6ece830f76de9ee83/687474703a2f2f696d61676573323031352e636e626c6f67732e636f6d2f626c6f672f3636303036372f3230313630342f3636303036372d32303136303431343232343930383036362d313837323233393236352e6a7067",
"https://camo.githubusercontent.com/f513fa631bd780dc0ec3cf2663777e356dc3664f/687474703a2f2f696d61676573323031352e636e626c6f67732e636f6d2f626c6f672f3636303036372f3230313630342f3636303036372d32303136303431343232343733323232332d3337333933303233322e6a7067"
]
},
"ok": true,
"code": 200,
"msg": "success",
"sql:generate|cache|execute|maxExecute": "1|0|1|200",
"depth:count|max": "1|5",
"time:start|duration|end": "1611279884442|12|1611279884454"
}
更多的接口功能和查询语法见:
新增一个接口
需求:假设我们需要新增一张数据表,并把数据表的数据快速发布出来
假设要增加的数据表如下:
-- 原石
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;
我们需要在model包下增加一个类:
package apijson.demo.model;
import apijson.MethodAccess;
@MethodAccess(
POST = {UNKNOWN, ADMIN},
DELETE = {ADMIN}
)
public class Stone {
}
在DemoSQLConfig中增加:
TABLE_KEY_MAP.put(Stone.class.getSimpleName(),"b_store");
配置表和实体类的映射
还需要在这个类中注册权限:
AbstractVerifier.ACCESS_MAP.put(Stone.class.getSimpleName(),getAccessMap(Stone.class.getAnnotation(MethodAccess.class)));
为了防止登录错误,我们可以提前先增加如下代码,DemoParser中,在每个构造方法执行完super()后增加:
setNeedVerify(false);
重启应用,POST请求:http://localhost:8080/get
body
{
"Stone": {
"id": 1
}
}
返回
{
"Stone": {
"id": 1,
"cost": 2,
"price": 3,
"length": 4,
"width": 5,
"height": 6,
"weight": 7.0,
"creationdate": "2021-01-22 10:00:56.0",
"modifydate": "2021-01-22 10:01:00.0",
"modifier": "8"
},
"ok": true,
"code": 200,
"msg": "success",
"sql:generate|cache|execute|maxExecute": "1|0|1|200",
"depth:count|max": "1|5",
"time:start|duration|end": "1611282106759|10|1611282106769"
}
参考资料
apijson简单使用的更多相关文章
- Jaguar_websocket结合Flutter搭建简单聊天室
1.定义消息 在开始建立webSocket之前,我们需要定义消息,如:发送人,发送时间,发送人id等.. import 'dart:convert'; class ChatMessageData { ...
- 完爆Facebook/GraphQL,APIJSON全方位对比解析(三)-表关联查询
相关阅读: 完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能 完爆Facebook/GraphQL,APIJSON全方位对比解析(二)-权限控制 自APIJSON发布 ...
- 腾讯开源 APIJSON 连创五个第一
腾讯第一个码云推荐项目,// 其它最早创建的是 TencentOS-tiny(码云) 2019.8.23 腾讯第一个码云GVP项目,// 其它最早创建的是 TencentOS-tiny(码云) 201 ...
- apijson 初探
apijson 初探 本文试着用 5W1H 方式切入,试图快速建立自己对 apijson 的整体认知,所以这不是一趟快速入门的 demo 之旅,而是显得比较务虚的探索式知识体系整合过程. 持续更新中. ...
- 【造轮子】打造一个简单的万能Excel读写工具
大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
随机推荐
- 每天学一点ES6(一)开始
最近学习vue,发现很多用法都不会了,虽然照猫画虎可以跑起来,但是总感觉很朦胧,是是而非的感觉不太好. 听说这些都是ES6的用法,所以决定要学习一下ES6 ES6 全称:ECMASctipt 6 简称 ...
- C#WebApi 接口增加备注和测试 默认api文档
1:配置 接口注释. (1)配置生成xml的路径.我们在项目上面点右键→属性→生成标签页配置xml的路径. (2)在xml的读取路径:在Areas\HelpPage\App_Start\HelpPag ...
- ReentrantLock锁-CAS与阻塞
ReentrantLock锁 ReentrantLock通过原子操作和阻塞实现锁原理,一般使用lock获取锁,unlock释放锁 lock的时候可能被其他线程获得所,那么此线程会阻塞自己,关键原理底层 ...
- svn忽略idea生成的本地配置文件
为根目录添加svn属性svn:global-ignores 值为 *.iml .idea 多个值之间用换行分隔
- git 清除本地git commit的内容
由于我经常git add . , 然后再git commit -m "文字说明",这样有时候代码嵌套再另一个项目里面,就会把外面的项目一起提交了,导致提交的代码不是我想要的.小菜鸟 ...
- feig中调用其他微服务接口无反应
1.调用微服务时get请求接口中不能使用@RequestBody注解,不然接口调用无反应.post接口中可以使用@RequestBody注解
- Eclipse中,No compiler is provided in this environment. Perhaps you are running on a JRE rather than a
问题说明 Eclipse导入Maven项目后,执行 mvn clean install后,出现如下错误: [INFO] ---------------------------------------- ...
- 看完这篇,保证让你真正明白:分布式系统的CAP理论、CAP如何三选二
引言 CAP 理论,相信很多人都听过,它是指: 一个分布式系统最多只能同时满足一致性(Consistency).可用性(Availability)和分区容错性(Partition tolerance) ...
- CSDN中的MARKDOWN编辑器如何快速复制粘贴图片?
前言 我们在使用csdn的markdown编辑器复制其它网站图片,按住ctrl+C复制选择图片,然后按ctrl+V粘贴图片到md编辑器无任何反应!markdown编辑器每次都没法复制粘贴截图! 下面小 ...
- linux零基础之--使用putty配置
PuTTY是一个Telnet.SSH.rlogin.纯TCP以及串行接口连接软件.随着Linux在服务器端应用的普及,Linux系统管理越来越依赖于远程.在各种远程登录工具中,Putty是出色的工具之 ...