V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
TommyLemon
V2EX  ›  程序员

自动化 ORM 库 APIJSON 3.4.9 发布,已 5K Star 入选码云最具价值项目

  •  2
     
  •   TommyLemon ·
    TommyLemon · 2019-03-14 10:15:46 +08:00 · 8035 次点击
    这是一个创建于 2111 天前的主题,其中的信息可能已经有所发展或是发生改变。

    APIJSON 3.4.0-3.4.9 更新内容:

    • 新增JFinal 版 Demo叫 APIJSONFinal,SpringBoot 版 Demo改名为 APIJSONBoot ;

    • 全面兼容 PostgreSQL ;修复自动化 JOIN 和子查询的问题等。

    • 新增 >,<,>=,<= 比较运算;新增支持自定义主键名等功能。

    APIJSON 简介

    APIJSON 是一种为 API 而生的 JSON 网络传输协议。
    简单的增删改查、复杂的查询、简单的事务操作 提供了完全自动化的 API。
    能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。
    适合中小型前后端分离的项目,尤其是互联网创业项目企业自用项目

    通过自动化 API,前端可以定制任何数据、任何结构!
    大部分 HTTP 请求后端再也不用写接口了,更不用写文档了!
    前端再也不用和后端沟通接口或文档问题了!再也不会被文档各种错误坑了!
    后端再也不用为了兼容旧接口写新版接口和文档了!再也不会被前端随时随地没完没了地烦了!


    多表关联查询、结构自由组合、多个测试账号、一键共享测试用例


    自动生成封装请求 JSON 的 Android 与 iOS 代码、一键下载自动生成的 JavaBean


    自动保存请求记录、自动生成接口文档


    一键自动接口回归测试,不需要写任何代码(注解、注释等全都不要)

    对于前端

    • 不用再向后端催接口、求文档

    • 数据和结构完全定制,要啥有啥

    • 看请求知结果,所求即所得

    • 可一次获取任何数据、任何结构

    • 能去除重复数据,节省流量提高速度

    对于后端

    • 提供通用接口,大部分 API 不用再写

    • 自动生成文档,不用再编写和维护

    • 自动校验权限、自动管理版本、自动防 SQL 注入

    • 开放 API 无需划分版本,始终保持兼容

    • 支持增删改查、模糊搜索、正则匹配、远程函数等

    APIJSON 生态内项目:

    • APIJSONAuto 接口管理工具,自动生成文档与注释、自动生成代码、自动化回归测试、自动静态检查等

    • uliweb-apijson Python 版 APIJSON,支持 MySQL, PostgreSQL, MS SQL Server, Oracle, SQLite 等

    • APIJSON.NET C# 版 APIJSON,支持 MySQL, PostgreSQL, MS SQL Server, Oracle, SQLite

    • apijson PHP 版 APIJSON,支持 MySQL, PostgreSQL, MS SQL Server, Oracle, SQLite 等

    • apijson Node.ts 版 APIJSON,支持 MySQL, PostgreSQL, MS SQL Server, Oracle, SQLite, WebSQL

    • APIJSONParser 参考 APIJSON 设计标准开发的一款 SQL 编译器框架

    • SpringServer1.2-APIJSON 智慧党建服务器端,提供 上传 和 下载 文件的接口

    • APIJSON-Android-RxJava 仿微信朋友圈动态实战项目,ZBLibrary(UI)+APIJSON(HTTP)+RxJava(Data)

    • Android-ZBLibrary Android MVP 快速开发框架,Demo 全面,注释详细,使用简单,代码严谨

    给热心的作者们点 Star 支持下吧 ^_^

    项目主页(源码、文档、视频、生态 等)

    创作不易,GitHub 右上角点 ⭐Star 支持下本项目吧,谢谢 ^_^

    39 条回复    2023-08-15 10:43:22 +08:00
    nuance2ex
        1
    nuance2ex  
       2019-03-14 10:45:19 +08:00 via iPhone
    顶一下,前 2 天还了解过。下个项目可以试下。
    TommyLemon
        2
    TommyLemon  
    OP
       2019-03-14 10:58:41 +08:00
    @nuance2ex 感谢支持^_^
    Variazioni
        3
    Variazioni  
       2019-03-14 11:18:01 +08:00
    感谢分享。。看上去是个大神啊。。
    mull
        4
    mull  
       2019-03-14 11:30:47 +08:00 via Android
    牛逼
    zeromake
        5
    zeromake  
       2019-03-14 11:48:29 +08:00
    我只想说文档还是那个上古格式,能不能换个,看得我难受,还有文档明显缺少有条理的使用和各种操作的一个目录,很多操作还得去看示例
    TommyLemon
        6
    TommyLemon  
    OP
       2019-03-14 11:48:40 +08:00
    @Variazioni 哈哈,感谢支持^_^
    TommyLemon
        7
    TommyLemon  
    OP
       2019-03-14 11:51:51 +08:00
    @zeromake 可以看看这个哦,严谨的官方文档 + 群友贡献的图文教程
    https://github.com/TommyLemon/APIJSON/blob/master/Document.md

    各种 Demo 和 视频教程也有的
    http://apijson.org/
    TommyLemon
        8
    TommyLemon  
    OP
       2019-03-14 11:52:07 +08:00
    @mull 感谢,可以试试哦
    Kylinsun
        9
    Kylinsun  
       2019-03-14 11:57:08 +08:00 via iPhone   ❤️ 4
    那个男人回来了。
    blless
        10
    blless  
       2019-03-14 12:11:19 +08:00 via Android
    老哥,你又来辣
    说句题外话,能跑跑模糊测试吗
    TommyLemon
        11
    TommyLemon  
    OP
       2019-03-14 15:02:41 +08:00
    @blless APIJSONAuto 提供了自动化测试,不需要写任何代码
    http://i.youku.com/apijson
    woscaizi
        12
    woscaizi  
       2019-03-14 15:36:35 +08:00 via iPhone
    不适合旧项目的改造吗?项目原有的 shiro 鉴权,mybtais 可以和它共同使用吗?
    CodeDeer
        13
    CodeDeer  
       2019-03-14 16:16:10 +08:00
    感觉 APIJSON 应该对标 prisma,而不是 GraphQL
    PhpBestRubbish
        14
    PhpBestRubbish  
       2019-03-14 16:19:47 +08:00
    anyele
        15
    anyele  
       2019-03-14 16:24:15 +08:00 via Android
    老哥又来了。。
    bofei
        16
    bofei  
       2019-03-14 16:32:43 +08:00
    是 前端写 json 直接操作 数据库吗?
    TommyLemon
        17
    TommyLemon  
    OP
       2019-03-14 18:55:17 +08:00
    @woscaizi 可以的,核心是 APIJSONORM, 一个 ORM 库,可任意搭配其他开源库或框架使用哦
    TommyLemon
        18
    TommyLemon  
    OP
       2019-03-14 20:43:40 +08:00
    @CodeDeer
    Prisma 是一个 ORM 库,用于实现 SQL 语句的封装。
    需要后端针对每个需求都写封装 SQL 语句的代码哦.

    而 APIJSON 是完全自动化生成 SQL 语句的,后端不需要写相关代码。
    前端按照 设计规范 来请求,后端会完全自动解析成 SQL 语句去连接数据库执行,并返回和 Request JSON 结构完全对应的 Response JSON
    https://github.com/TommyLemon/APIJSON/issues/29
    TommyLemon
        19
    TommyLemon  
    OP
       2019-03-14 20:44:36 +08:00
    @PhpBestRubbish 感谢支持^_^,可以试试哦
    TommyLemon
        20
    TommyLemon  
    OP
       2019-03-15 09:57:29 +08:00
    @bofei 间接操作,中间是有做 自动化权限控制、自动防 SQL 注入 等各种安全措施的
    dany813
        21
    dany813  
       2019-03-15 10:01:34 +08:00
    看着不错
    Cat73
        22
    Cat73  
       2019-03-15 10:10:06 +08:00
    居然看到了码云,那就顺手给自己的包打个广告吧: https://gitee.com/cat73/mybatis-pager

    为 SpringBoot(基于 Servlet 的 Web 项目) + Mybatis 提供简单易用的分页查询支持

    一个 @Pager 注解搞定前后端分离项目的分页喵~
    rogwan
        23
    rogwan  
       2019-03-15 10:36:17 +08:00
    后端微服务框架,现在也倾向于直接返回 json 数据,框架 ORM 的 CRUD 几乎有媲美原生的 SQL 能力。
    楼主能介绍下 APIJSON 的定位吗?是取代"ORM+微服务"的组合装吗?以后在 SQL 的能力上,是继续保持轻量级 SQL,还是会全兼容?甚至可以 execute sql 语句?
    xiaogui
        24
    xiaogui  
       2019-03-15 10:37:02 +08:00
    GraphQL?
    ChenJunXin
        25
    ChenJunXin  
       2019-03-15 11:00:43 +08:00
    @xiaogui #24 我也想到了这个,是不是定位一样的?
    jorneyr
        26
    jorneyr  
       2019-03-15 11:21:28 +08:00
    前端都把事干完了,我们后端啥也不用干了,我是不是要失业了,有点担心
    TommyLemon
        27
    TommyLemon  
    OP
       2019-03-15 11:36:06 +08:00
    @dany813 可以试试哦
    TommyLemon
        28
    TommyLemon  
    OP
       2019-03-15 11:44:17 +08:00
    @rogwan
    核心一直是 权限、数据、结构校验 + 解析 JSON -> 转为 SQL -> 封装 JSON 的 ORM 库,
    名为 APIJSONORM, 目前仅仅依赖 fastjson 这一个 jar,仅仅 47 个 Java 类,
    以后也会继续保持轻量,可任意搭配其他开源库 /框架 /插件 使用。
    至于执行 SQL 对数据库 CRUD,是自己的业务工程内重写 SQLExecutor 的 executeQuery ,executeUpdate 实现的,
    完全可以自定义 驱动、连接池、中间件、缓存 等。

    “后端微服务框架“ 能具体举个例子吗? SpringBoot 这种 HTTP Server 和 APIJSON 这种 ORM 不是一类的,
    APIJSON 主项目也提供了基于 SpringBoot 的 Demo 叫 APIJSONBoot,还有基于 JFinal 的 APIJSONFinal。
    TommyLemon
        29
    TommyLemon  
    OP
       2019-03-15 11:48:18 +08:00
    @xiaogui
    Facebook 出的 GraphQL,你拿出来对比只能说明你没有对 它 和 APIJSON 有足够的了解。
    在 CRUD 上 APIJSON 完爆 GraphQL:

    完爆 Facebook/GraphQL,APIJSON 全方位对比解析(一)-基础功能
    juejin.im/post/5ae80edd51882567277433cf

    完爆 Facebook/GraphQL,APIJSON 全方位对比解析(二)-权限控制
    juejin.im/post/5b13cda1f265da6e4a6bcfee

    完爆 Facebook/GraphQL,APIJSON 全方位对比解析(三)-表关联查询
    juejin.im/entry/5b4ff88f6fb9a04f914a8df5

    目前我已知的所有的开源库,只有 APIJSON 能做到 关系型数据库 自动化 CRUD,
    如果有别的,欢迎告诉我,我会认真了解和对比下。

    以下项目主页包括 源码、部署与协议文档、视频教程、接口工具等。
    创作不易,GitHub 右上角点 ⭐Star 支持下吧,谢谢 ^_^
    github.com/TommyLemon/APIJSON/
    TommyLemon
        30
    TommyLemon  
    OP
       2019-03-15 11:48:43 +08:00
    TommyLemon
        31
    TommyLemon  
    OP
       2019-03-15 11:59:08 +08:00
    @jorneyr 并不会。
    APIJSON 通过自动化 API 实现 [大部分] CRUD 的业务需求,
    但还有部分需要特殊处理数据或结构的地方做不了自动化,
    所以 APIJSON 提供了 [远程函数],后端可以在里面写代码自定义自己的业务逻辑。
    https://github.com/TommyLemon/APIJSON/blob/master/Document.md#3.2

    还有一小部分
    很复杂的查询(一般对应报表之类的需求,各种 JOIN 和子查询 嵌套、字符串拼接 等,SQL 写一屏以上)、
    复杂的事务操作(操作多表,还可能中间 CRUD 出现两种以上,各种校验、多次读写、事务回滚、定制异常等)
    等用 APIJSON 做就很吃力了甚至不能实现,建议还是用手写接口(包括 SQL)的方式来实现。
    还有后端也不止 CRUD,还有各种
    报表统计、数据分析、个性化推荐、服务监控、数据库运维(如果没有 DBA 的话)
    等工作,这些也不是 APIJSON 的适用范围或者说应用场景。
    rogwan
        32
    rogwan  
       2019-03-15 13:30:28 +08:00
    @TommyLemon APIJSON 连简单的业务层逻辑(就是我说的微服务的意思)都干了,看起来这后端只要把数据库设计完就没事了,其他的前端都搞定。
    TommyLemon
        33
    TommyLemon  
    OP
       2019-03-15 14:50:34 +08:00
    @rogwan 对的,但前端额外做的事情基本就是:
    在原来 RESTful 传 JSON 参数的基础上, 构建的 JSON 键值对和层级多一些。
    而且后端把接口上传到 APIJSONAuto(可下载源码部署到内网),前端点开看就知道了,
    流程和以前一样,都不用自己去想怎么构造各种嵌套的查询,各种 JOIN、子查询等,
    JSON 参数传到后端的 APIJSONORM,就会被自动解析成 SQL 并自动连数据库 CRUD,
    然后将结果集封装成和请求 JSON 结构完全对应的 返回结果 JSON,
    期间自动校验 数据、结构、权限,自动防 SQL 注入。

    APIJSON 目前有 Java,C#,Python,PHP,Node 5 种语言的后端库及 Demo,Android, iOS, JavaScript 种前端 Demo,
    还有一个
    第三方 APIJSON 协议解析库,将 JSON 动态编译成 SQL,也已经比较成熟了,各种自动化 JOIN 也都支持。
    https://github.com/Zerounary/APIJSONParser

    还有一个
    自动化接口管理工具,自动生成代码、自动静态检查、自动化回归测试、自动生成文档与注释等。
    https://github.com/TommyLemon/APIJSONAuto

    创作不易,GitHub 右上角点 Star 支持下作者吧 ^_^
    qping
        34
    qping  
       2019-03-15 14:56:06 +08:00
    @anyele #15 什么梗。。。
    rogwan
        35
    rogwan  
       2019-03-15 15:03:43 +08:00
    @TommyLemon 支持,已经星标啦!这个前端要是再会点 UML 类图生成数据库 O(∩_∩)O
    TommyLemon
        36
    TommyLemon  
    OP
       2019-03-15 15:29:07 +08:00
    @rogwan 感谢,哈哈,其实用 MySQLWorkbench, Datagrip, Navicat 等各种数据库工具建表也很方便了
    TommyLemon
        37
    TommyLemon  
    OP
       2019-03-15 18:27:20 +08:00
    @woscaizi
    建议使用 APIJSON 时,权限用 APIJSONORM 提供的自动化权限 注解+注册 的方式控制。
    如果一定要用 Shiro 这种基于路由的权限库,可以拼接 APIJSON 的通用 API 与请求 JSON 里的 tag,
    例如 base_url/post 与 tag:User 拼接就是 base_url/post/user,给它传进去一个虚拟路由,动态设置 URL。
    TommyLemon
        38
    TommyLemon  
    OP
       2019-03-15 18:39:31 +08:00
    @blless
    模糊测试用现有的工具即可,APIJSON 的 Demo 提供了 HTTP API,
    甚至也实现可以用 TCP, UDP 来通信的 Demo,暴露出的 API 就能用工具进行模糊测试。
    jimisun
        39
    jimisun  
       2023-08-15 10:43:22 +08:00
    @TommyLemon 你好,我想服务 apijson 的 json 协议,转换为底层各种类型如 mysql ,oracle,h2 等类型的 sql 语句,能给出思路吗? 另:apijson 适配了哪些数据库呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2574 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:40 · PVG 23:40 · LAX 07:40 · JFK 10:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.