Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#2021Tencent Rhino-bird Open-source Training Program—APIJSON# #2

Closed
tencent-adm opened this issue May 13, 2021 · 1 comment
Closed

Comments

@tencent-adm
Copy link
Member

tencent-adm commented May 13, 2021

腾讯犀牛鸟开源人才培养计划
Tencent Rhino-bird Open-source Training Program

为响应国家十四五规划的开源战略,腾讯于2021年5月发布“首届腾讯犀牛鸟开源人才培养计划”,希望企业界和教育界形成合力,打造面向高校学生的开源课程和开源实践培养方案,培育开源人才,普及开源文化,助力开源人才生态的发展。

首届项目由教育部计算机教学指导委员会、教育部软件工程教学指导委员会、中国信息通信研究院作为联合指导单位,包括开源基础培训、开源进阶研学、开源项目实战三个环节,项目涉及云原生、微服务、容器、AI、大数据、前端、物联网/边缘计算等多项技术热点。

各位同学报名即可参加线上开源系列课程,学习开源知识,对话学界及产业界大咖。其中入选开源项目实战的学生将在导师的一对一指导下,利用暑假开展编程实战,并有机会获得腾讯开源贡献者证书(目前全球只发出了10+张)。

更多项目信息请看官网:https://opensource.tencent.com/summer-of-code

项目简介
APIJSON是后端的一个零代码接口和文档ORM库,赋能前端(客户端)定制返回JSON的数据和结构。可大幅提振开发效率、强力杜绝联调扯皮、巧妙规避文档缺陷、非常节省流量带宽等。
APIJSON 项目主页:https://github.com/Tencent/APIJSON
APIJSON说明文档:https://github.com/Tencent/APIJSON/blob/master/%E8%AF%A6%E7%BB%86%E7%9A%84%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3.md

项目导师
周作彪,APIJSON, ZBLibrary等热门开源项目的作者、开源布道师
https://github.com/TommyLemon

导师寄语
APIJSON 是一个业内颇具影响力的后端知名热门项目,企业案例丰富、应用场景广泛、腾讯内外获得多个奖项和多次受邀演讲,这个零代码接口和文档 ORM 库随着 Serverless 的兴起会越来越重要。学习和使用这个前沿技术,不仅能提升自己与时俱进,还可以作为参与腾讯开源的一个切入点,为日后的工作打下坚实基础。

编程任务(任选一个)
1.完善入门介绍视频(清晰展示对应的操作步骤,从下载源码到跑起来项目完成接口测试,可参考宣传视频)
https://lexiangla.com/teams/k100046/classes/a4eba9f4b6d711eba2ec268dd73d15f1?type=0&company_from=79350bd4d06911ea91f05254002f1020

2.接入 presto/hive/clickhouse/db2 任意一个(能跑起来项目进行接口测试,起码简单的分页排序搜索等查询功能可用)
https://github.com/Tencent/APIJSON#%E8%A7%84%E5%88%92%E5%8F%8A%E8%B7%AF%E7%BA%BF%E5%9B%BE

理论上所有支持 SQL 与 JDBC/ODBC 的软件,都可以用本项目对接 CRUD,待测试:
ClickHouse, Hive(延伸支持 Hadoop, Spark), DB2, Presto

可依赖它们的 JDBC 驱动(jar/maven/gradle 方式都行)并在 DemoSQLConfig 中配置,参考以下步骤
https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server
及对应的 Demo(建议用最简单的初级上手 Demo 项目 APIJSONDemo)
https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONDemo/pom.xml

贡献方式
GitHub 上为 APIJSON 提交 Pull Request,具体见
https://github.com/Tencent/APIJSON/blob/master/CONTRIBUTING.md

联系导师

周作彪:[email protected]

@TommyLemon
Copy link
Collaborator

TommyLemon commented Jun 15, 2021

问题答疑

1. 学习和使用 APIJSON 需要了解哪些相关的知识?

需要了解 MySQL/PostgreSQL 或其它数据库的安装、建表、记录数据写入,Java IDE(InteliJ IDEA 或 Eclipse) 的安装,JDBC 驱动的接入(maven 或 jar 依赖)
https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONDemo/pom.xml

2. 接入不同数据库时,是否需要修改相关源码?

如果在业务项目(假设为 APIJSONDemo)则需要引入 maven/jar 依赖,并修改 DemoSQLConfig.java 的源码来配置数据库。
如果在 APIJSON 生成的 SQL 后出现不兼容该数据库 SQL 语法,则需要改 AbstractSQLConfig.java 的源码。

3. APIJSON 源码需要掌握到什么程度?

能够修改 APIJSONDemo 的源码,及 APIJSON AbstractSQLConfig.java 关于 JSON 转 SQL 的过程,可以参考用户写的源码解析
https://github.com/rainboy-learn/apijson-learn


例如对接 DB2 最主要的是部署数据库,接入对应的 JDBC 把它跑起来,可以使用最简单的 Demo 来修改
https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server

AbstractSQLConfig.java 中 JSON 转 SQL 应该只需要把 分页 语法调整下就可以兼容低版本,
可以参考有个开发者贡献的 Oracle 分页语法(修改了 getSQL 和 getLimitString,使用 ROWNUM 和子查询)
Tencent/APIJSON@08a3125

AbstractSQLConfig.java 中 getQuote 为字段名引号,MySQL 用的是反引号 `id` , PostgreSQL/SQLServer/Oracle 都是双引号 "id",
如果字段名和数据库关键词没有冲突,可以直接 return ""; 即不使用引号,对于大部分数据库也都没问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants