772 Star 5.9K Fork 1.4K

GVP腾讯开源 / APIJSON

 / 详情

常见问题与提问前必看

待办的
拥有者
创建于  
2020-12-28 20:58

本 Issue 仅限作者维护,其他人不要回复。

如果你已经知道问题所在、怎么解决,请直接 提交 Pull Request 为社区做贡献,非常感谢。
开发者也是人,也需要工作、休息、恋爱、陪伴家人、走亲会友等,也有心情不好和身体病痛,
往往没有额外的时间精力顾及一些小问题,请理解和支持,开源要大家参与贡献才会更美好~
少数个人的热情终有被耗尽的一天,只有大家共同建设和繁荣社区,才能让开源可持续发展!
https://github.com/Tencent/APIJSON/issues/406


"APIJSON 支持/能 XX 吗?",例如 "支持全文检索吗?","支持连接池吗?", "能分库分表吗?",
问这类问题之前先想想这是不是 ORM 库或者说 SQL 的功能:
如果是那基本就支持,问之前自己先试试吧,没试出来再问;
如果不是,问问自己 "APIJSON 妨碍我用其它库实现这个需求吗?",
APIJSON 良好的兼容性让这个问题几乎不会发生,基本随便找个热门的 分库分表/连接池 等库都能简单对接起来。
https://github.com/Tencent/APIJSON/issues/153 https://github.com/Tencent/APIJSON/issues/107 https://github.com/Tencent/APIJSON/issues/98 https://github.com/Tencent/APIJSON/issues/323 https://github.com/Tencent/APIJSON/issues/104 https://github.com/Tencent/APIJSON/issues/108 https://github.com/Tencent/APIJSON/issues/89 https://github.com/Tencent/APIJSON/issues/64 https://github.com/Tencent/APIJSON/issues/437 https://github.com/Tencent/APIJSON/issues/436 https://github.com/Tencent/APIJSON/issues/313 https://github.com/Tencent/APIJSON/issues/270 https://github.com/Tencent/APIJSON/issues/267 https://github.com/Tencent/APIJSON/issues/265


1.尝试在 下方常见问题 (快捷键 Ctrl/Command + F) 和 历史问题 (Filters 输入框) 搜索答案。
2.尝试阅读 通用文档 或看 视频教程 找到答案。
3.尝试阅读 Demo 示例代码 以找到答案。
4.尝试自己 检查或试验 以找到答案。
5.尝试阅读 源码和注释 以找到答案。

如果以上都尝试过了请提一个新的issue。
强烈推荐阅读 ​提问的智慧-中国版如何向开源社区提问题如何有效地报告 Bug如何向开源项目提交无法解答的问题
提问的智慧,更好的问题更容易获得帮助。


提 bug 请发请求和响应的【完整截屏】,没图或者 【不是全屏】的自行解决!
开发者有限的时间和精力主要放在【维护项目源码和文档】上!
【描述不详细】 或 【文档/常见问题 已有答案】 的问题直接拒绝!!
【态度 不文明/不友善】的可能会被拉黑,问题也不予解答!!!

请求参数 JSON 中表名、字段名、关键词及对应的值都是大小写敏感、逗号敏感、分号敏感、空格敏感、换行敏感,
大部分情况都不允许空格和换行,表名以大写字母开头,不要想当然,请严格按照 设计规范 来调用 API #181

常见问题

0.为什么 Issue/QQ群/微信群 没人愿意回答你的问题?

文档/注释/常见问题已解答的重复提问、缺这少那没有足够的包括截屏在内的上下文信息、提问不礼貌态度不客气等。

开发者时间精力有限,原则上优先解决 登记用户 和 贡献者 的问题,
不解决 文档/视频/常见问题 已明确说明、描述简陋 或 态度无礼 的问题!
如果你已经多次得到帮助,却仍然只索取不贡献,那就别指望大家再帮你!
私聊作者请教技术问题 或者 频繁在互助群 @ 作者 可能会被拉黑/禁言/踢群,请尊重和理解,谢谢!

如果你 提 PR 登记了自己使用 APIJSON 的公司,可以加 企业用户支持专群,作者亲自且优先答疑,
作者只有解答完了这个专群里的全部问题,才看情况解答 Issue 里的问题(对 Issue 不保证解答、更不保证及时);
其它群为互助群,由于大多数问题 在文档/Issue 已有答案却反复提 或者 缺少必要信息要来来回回沟通问清细节 已浪费太多时间,
甚至有白嫖还把自己当大爷的自私自利伸手党输出情绪,作者不再解答互助群问题,由群友互助解答,建议未登记企业的用户 填问卷提 Issue

如果你为 APIJSON 做出了以下任何一个贡献:
提交了 PR 且被合并提交了优质 Issue发表了优质文章开发了可用的生态项目
可以在群里发出贡献链接并附带说明,管理员将设置关注你一段时间,优先答疑解惑。
互助群一般解答顺序:贡献者 > 帮助他人的群友 > 带企业名昵称 > 带岗位名昵称 > 其他群友。

QQ技术群2 开始 3 个数字(1,2,3位):734

1.如何定制业务逻辑?

在后端编写 远程函数,可以拿到 session、version、当前 JSON 对象、参数名称 等,然后对查到的数据自定义处理
https://github.com/Tencent/APIJSON/issues/101

远程函数原理和使用详细讲解
https://github.com/jerrylususu/apijson_todo_demo/blob/master/FULLTEXT.md#远程函数和-function-表

2.如何控制权限?

在 Access 表配置校验规则,默认不允许访问,需要对 每张表、每种角色、每种操作 做相应的配置,粒度细分到行级

https://github.com/Tencent/APIJSON/issues/12

权限控制原理和使用详细讲解
https://github.com/jerrylususu/apijson_todo_demo/blob/master/FULLTEXT.md#访问控制角色和-access-表

3.如何校验参数?

在 Request 表配置校验规则 structure,提供 MUST、TYPE、VERIFY 等通用方法,可通过 远程函数 来完全自定义

https://github.com/Tencent/APIJSON/wiki#%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86

参数校验原理和使用详细讲解
https://github.com/jerrylususu/apijson_todo_demo/blob/master/FULLTEXT.md#访问方法请求体与-request

QQ技术群2 最后 3 个数字(7,8,9位):054

4.如何生成文档?

用 APIAuto(https://github.com/TommyLemon/APIAuto)
https://github.com/Tencent/APIJSON/issues/85

5.如何 OR 或连接不同 key 对应的条件?

用对象关键词 @combine,例如 5.0.0+ 可以用 "@combine":"name~ | tag~" ,低于 5.0.0 只能用 "@combine":"name~,tag~"

https://github.com/Tencent/APIJSON/issues/107

6.登录后 增删改 报错未登录?

如果是自己的网页、小程序、客户端这样报错,一般是因为没有存取 Cookie,需要在登录成功后保存 Cookie 并在调其它接口时带上
#I1JTYH:登录成功后,新增报错.

如果使用网页工具测试报错,则很可能是 Chrome 80+ 强制前端网页 JavaScript 跨域 same-site Cookie 的策略导致,可以改用 Postman 或修改 Chrome 设置。
https://github.com/Tencent/APIJSON/issues/166

如果是用 APIAuto,可以设置服务器代理,如果在贵司内网,则必须在内网部署 APIJSONBoot 系列后端作为代理服务,具体见 APIAuto 常见问题 1.无法访问接口
https://github.com/TommyLemon/APIAuto#1%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E6%8E%A5%E5%8F%A3

也可以像 APIJSONBoot-MultiDataSource 一样把 APIAuto 的源码放到 src/main/resources/static 目录,
再用浏览器打开本地主页
http://localhost:8080
然后把网页的 URL 输入框 改为
http://localhost:8080/login
托管服务器地址 URL 改为
http://localhost:8080
(注:假设本地服务端口为默认的 8080)

7.和 GraphQL 的区别

GraphQL 是用来聚合和过滤数据的网关,不提供增删改查功能;
APIJSON 提供万能通用的增删改查 API,零代码实时实现各种简单的和复杂的需求(一对一、一对多、多对一、多对多任意关联,各种 JOIN、各种子查询及 JOIN 和子查询相互嵌套等)
https://github.com/Tencent/APIJSON/issues/205
https://github.com/Tencent/APIJSON/issues/108#issuecomment-533003949

8.和 Swagger, YApi 等接口工具的区别

APIJSON 不是文档工具、也不是测试工具,配套的 APIAuto 才是 HTTP 接口 的文档/测试工具
https://github.com/Tencent/APIJSON/issues/27

9.和 Hiberante, JPA, JOOQ, Prisma, Sequelize, Linq 等其它 ORM 库的区别

只有 APIJSON 能做到不写任何代码,也不生成任何代码,直接零代码做到各种增删改查、各种结构嵌套、各种外键关联、各种条件与或非组合、各种 JOIN、各种子查询 等几乎所有 SQL 的功能,其它 ORM 库如果有做到零代码实现 APIJSON 1/10 功能 的,请直接 New issue 讨论。
https://github.com/Tencent/APIJSON/issues/29

10.APIJSON 相比其它框架/库的优势?

APIJSONBoot 对比 SSM/SSH 等开发效率可提升 20 倍以上
https://github.com/Tencent/APIJSON/issues/132

QQ技术群1 最后 3 个数字(7,8,9位):115

11.如何使用自增主键 id?没有主键 id 怎么增删改?

删除和修改必须要有主键。
在没有主键的表新增记录 或者 在有主键的表使用自增主键,
可在 DemoSQLConfig static 代码块中重写 SIMPLE_CALLBACK 的 newId 方法,return null 即可
https://github.com/Tencent/APIJSON/issues/186

12.如何自定义主键 id 名称?类型可以为 varchar 等字符串吗?

DemoSQLConfig static 代码块中重写 SIMPLE_CALLBACK 的 getIdKey/getUserIdKey 方法
https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/DemoSQLConfig.java

类型除了 int/bigint 等整数也可以为 varchar/char 等字符串,对应代码里的 Long 和 String
https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/orm/AbstractVerifier.java#L432-L458

13.如何实现多数据源?

可以在 DemoSQLConfig 中根据 database, schema, table 或者其它方式来区分,给 getDBUri 返回不同的 uri
https://github.com/Tencent/APIJSON/issues/148

14.自己已经有一套鉴权系统了,不想用 APIJSON 的这套怎么办?

DemoParser 重写 Parser 中的 isNeedVerifyLogin, isNeedVerifyRole, isNeedVerifyContent 来指定是否开关某个方面的校验
https://github.com/Tencent/APIJSON/blob/22ed7cc9e801f35158e85cf6adfa5c1243eb09c9/APIJSONORM/src/main/java/apijson/orm/AbstractParser.java
https://github.com/Tencent/APIJSON/issues/12#issuecomment-462603308

也可以使用或参考其他开发者贡献的鉴权方式
https://github.com/Tencent/APIJSON/issues/286

15.如何自动插入 create_time, update_time, creator_id, is_deleted 之类的业务上全局通用字段?

可以用 远程函数 + 引用赋值 来针对某个特定业务(表)来实现。如果是通用字段,还可以在重写 DemoObjectParser 重写 newSQLConfig,把从 Controller 经过 DemoParser 传过来的 gmt_create, create_time, creator_id, is_deleted 等 put 进去。具体见
https://github.com/Tencent/APIJSON/issues/196

16.如何集成到自己现有的项目?

在你用的框架类似 Demo 新增几个接口调用 DemoParser 即可,
APIJSONController 只是简单封装,可以不继承,
例如 JFinal 版 Demo 中的 DemoController 就没有继承它,而是继承 JFinal 的 Controller。
https://github.com/Tencent/APIJSON/issues/201#issuecomment-783991477

建议直接把 APIJSONDemo 的 DemoSQLConfig 和 DemoController 复制到自己项目,DemoApplication 合并到自己的 Application。
https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONDemo/src/main/java/apijson/demo

也可以参考其他开发者贡献的 APIJSON Todo Demo (让 APIJSON 上手更简单一些的尝试)
https://github.com/jerrylususu/apijson_todo_demo/blob/master/FULLTEXT.md

17.Demo 提供的表 SQL 文件很多,如果集成到自己项目,哪些表是必须的?

Function(注册远程函数), Request(配置参数校验规则), Access(配置权限校验规则)
https://github.com/APIJSON/APIJSON-Demo/tree/master/MySQL/single

18.如何一次性查全部数据/如何一次性查所有表记录?如何查询每页超过 100 条?如何查询超过 100 页?query:2 为什么不能查全部数据?

不支持,必须有最大数量限制前端传参 count 的值(count: 0 取最大值,不传则为默认值 Parser.getDefaultQueryCount),否则在数据量大的时候容易导致慢查询甚至拖垮数据库。
可在 DemoParser 重写 Parser.getMaxQueryCount 来指定最大查询数量,重写 Parser.getMaxQueryPage 来指定最大查询页码(从 0 开始)。
另外 query: 2 是指同时查数据和数量。
https://github.com/Tencent/APIJSON/blob/master/Document.md#3.2

https://github.com/Tencent/APIJSON/issues/484
https://github.com/Tencent/APIJSON/issues/259
https://github.com/Tencent/APIJSON/issues/243

另外可以通过

"@order":"id+",
"id>": 列表最后一项的 id

"@order":"id-",
"id<": 列表最后一项的 id

这种方式来优化分页性能,并且绕过页码限制(实际可累计查询超过 10000 条 )。

19.如何实现假删除/软删除/逻辑删除?

可以用 is_deleted int 字段标记是否已删除,调 /put 接口改掉 is_deleted 的值,然后查询时可以传 is_deleted 条件或参考以上问题 15 在后端统一自动插入 is_deleted 条件
https://github.com/Tencent/APIJSON/issues/301

20.为什么引用赋值关联的副表查不到数据?

不在同一层级必须用 完整(绝对)路径,在熟悉前最好只用 完整(绝对)路径,不要偷懒省几个字符错用 缺省(相对)路径
https://github.com/Tencent/APIJSON/issues/335

QQ技术群2 中间 3 个数字(4,5,6位):652

21.通用文档中的存储过程示例对应的 SQL 是?

根据 userId 查评论列表

DROP PROCEDURE IF EXISTS getCommentByUserId;

DELIMITER //
CREATE PROCEDURE getCommentByUserId(IN id bigint, IN limit_ int, IN offset_ int)
BEGIN
SELECT 
    *
FROM
    sys.Comment 
WHERE userId = id
LIMIT limit_ OFFSET offset_;
END //
DELIMITER ;

SHOW PROCEDURE STATUS;

CALL sys.getCommentByUserId(82001, 10, 0);

获取所有产品

DROP PROCEDURE IF EXISTS getAllProducts;

DELIMITER //
CREATE PROCEDURE getAllProducts()
BEGIN
SELECT * FROM sys.Comment LIMIT 1;
END //
DELIMITER ;

SHOW PROCEDURE STATUS;

CALL sys.getAllProducts();

判断是否包含

DROP PROCEDURE IF EXISTS isContain;

DELIMITER //
CREATE PROCEDURE isContain(IN array text, IN val int)
BEGIN
SELECT json_contains(array,val);
END //
DELIMITER ;

SHOW PROCEDURE STATUS;

CALL sys.isContain('[82001,82002,82003]','82001');

22.APIJSON 是否支持微服务框架?支持哪些微服务框架?如何接入?

当然支持。有哪个微服务框架不支持 ORM 库这种基础组件?这个问题就像问 日志框架是否支持微服务、数据库是否支持微服务一样。
和单体服务用法一样,在需要用到的微服务里依赖和配置 APIJSON 即可。
https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server

23.APIJSON 除了 HTTP+JSON 是否还支持 RPC 框架(基于 Protobuf 协议的 GRPC,基于 Thrift 协议的 Thrift 等)?

支持。例如 GRPC 基于 Protobuf 协议,IDL 内字段是通过编码固定死的,所以不能像 JSON 一样灵活,但仍然可以提供一个 string 类型字段来传输 APIJSON 的 JSON 格式字符串(请求参数、返回结果)。Thrift, BRPC 等同理。
应该没有哪个是网络层传输框架不支持 APIJSON,除非某框架不支持前后端传输字符串,但这个显然不符合逻辑,连字符串这个最基本的类型都不支持传输,谁还会用?

24.APIJSON 性能(执行效率)表现怎么样?能否达到手写 SQL 的效率?

就像 Java 的 GC 自动垃圾回收相对于 C/C++ 手动管理内存一样,ORM 相对手写 SQL 提高了下限,也拉低了上限。
APIJSON 做了预编译、前置主键条件、前置 AND 条件、字段限制(可选)、多级缓存、查询预判、读写限流 等大量性能优化,
一般生成的 SQL 执行效率在中级工程师手写优化 SQL 的水平。
https://github.com/Tencent/APIJSON/issues/16

腾讯业务百万数据 6s 响应,APIJSON 性能优化背后的故事
https://zhuanlan.zhihu.com/p/447844661

另外做性能测试或上线生产环境前先 Log.DEBUG = false 关掉日志!

25.APIJSON 支持缓存吗?支持哪些缓存框架/库?如何接入?

APIJSON 原生支持后端的数据库缓存(MySQL, PostgreSQL 等可控制 SQL_NO_CACHE 参数),原生支持 HashMap 和 ArrayList 内存缓存,支持第三方内存缓存(Redis, Tendis, Memcached, Ehcache 等),
当然通过 HTTP 协议等也支持网络缓存,通过客户端各种 SDK/ HTTP 框架或库也支持客户端内存缓存、磁盘缓存等。

想问下cache的部分基于什么实现的?
https://github.com/Tencent/APIJSON/issues/146

APIJSON 怎么很好的跟分布式缓存结合呢?
https://github.com/Tencent/APIJSON/issues/90

QQ技术群1 中间 3 个数字(4,5,6位):020

26.APIJSON 支持哪些数据库?是否支持 MongoDB 等非关系型数据库?

APIJSON 原生支持的数据库及版本都已在首页顶部列出
https://github.com/Tencent/APIJSON#--apijson
image

包括但不限于
MySQL 5.7+, PostgreSQL 9.5+, MS SQLServer 2012+, Oracle 12C+, IBM DB2 7.1+, TiDB 2.1+, ClickHouse 21.1+, Hive 3.1.2+, Hadoop 3.1.3+
理论上所有支持 SQL 与 JDBC/ODBC 的软件,都可以用本项目对接 CRUD,待测试:
Elasticsearch, OceanBase, Presto, Spark,Phoenix(延伸支持 HBase), Presto/Trino(延伸支持 Redis, Hive, Kafka, Elasticsearch, Thrift, Cassandra, MySQL, PostgreSQL, Oracle, MongoDB...)

目前 APIJSON 专注于 MySQL, PostgreSQL 等关系型数据库,暂时不提供原生支持 MongoDB 等非关系型数据库。
非原生支持的数据库(如 Redis 等内存数据库,MongoDB 等非关系型数据库)也可以通过重写 SQLConfig, SQLExecutor 等相关方法来接入。参考以上 25.APIJSON 支持缓存吗?

27.APIJSON 支持哪些编程语言?哪些后端(服务端)、前端(终端、客户端)?

APIJSON 目前提供实现的编程语言及前后端都已在首页顶部列出
https://github.com/Tencent/APIJSON#--apijson
image

支持的后端编程语言及版本包括但不限于 Java 1.8+, Go 1.16+, CSharp 2.1+, PHP 8.0+, Node.js ES6+, Python 3.0+
前端支持浏览器网页、PWA、SPA、微信等各家小程序、Android 客户端、iOS 客户端、Windows 客户端、macOS 客户端
以及几乎所有能运行在浏览器/终端(手机、平板、电脑、服务器、智能家居、嵌入式、机器人等)设备
并且能够发起网络请求和接收回包结果的编程语言,包括但不限于
Python, C, Java, C++, C#, Visual Basic, JavaScript, PHP, Assembly language, Go, Swift, R, MATLAB, Delphi, Object Pascal, Ruby, Objective-C, Perl, Groovy, Rust, Dart, Kotlin, Lua, Julia, Prolog, Lisp, D, Scala, TypeScript, VBScript, PowerShell, Haskell, Clojure

28.APIJSON 支持全文检索/全文搜索/全文索引吗?

原生支持 MySQL 等数据库的
https://github.com/Tencent/APIJSON/issues/265

如果是 Elasticsearch,可能支持,试试 elasticsearch-sql
https://www.elastic.co/cn/what-is/elasticsearch-sql

29.修改了 Access/Request/Function/Document 表配置后如何生效?

重启项目,或者调用 /reload 接口,具体见 DemoController.reload 方法注释

30.APIJSON 支持上传、下载文件(Excel、图片、音视频等)吗?

不支持,APIJSON 是专为数据库表记录增删改查的 ORM 库,不要拿着锤子就看什么都觉得是钉子。
https://github.com/Tencent/APIJSON/issues/108
https://github.com/Tencent/APIJSON/issues/298
https://github.com/Tencent/APIJSON/issues/323

虽然可以通过 远程函数 或 重写方法 等来写代码自定义实现扩展,但大部分情况下使用其它方案更简单方便,
网上搜索 "SpringBoot 上传文件" 等就有一大堆现成的成熟方案,其它同理,举一反三。
APIJSON 对各种库、框架的兼容性很好,几乎没有不兼容的,基本不用担心配合其它项目使用会有问题。

31.在哪查看各种功能对应请求参数的 Demo 示例?

除了通用文档的 60 多个带测试链接的各种例子
https://github.com/Tencent/APIJSON/blob/master/Document.md
image
image
image
image

配套的接口工具 APIAuto 上两百个左右例子也多看看
http://apijson.cn/api

账号及密码 13000082001/123456
image

账号及密码 13000088888/123456
image

32.Maven/Gradle 等远程依赖下载/同步不了 APIJSON, apijson-framework 等相关依赖库怎么办?

先检查仓库源是否有 jitpack.io,没有就加上,Demo 里都是有的,可以直接复制粘贴,然后 sync。
如果已有还是不行,开 VPN 网络代理试试,可以先打开 youtube.com/google.com 等网站验证 VPN 是否可用。
再不行就注释相关依赖,直接改用依赖本地 jar 包,最近发布的每个 release 的 Assets 都有相关文件:
https://github.com/APIJSON/APIJSON-Demo/releases

例如 APIJSONBoot 的 libs 目录就是添加了本地 jar 包,作为备选依赖方式
https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONBoot/libs

相关 issue:
https://github.com/APIJSON/APIJSON-Demo/issues/21
https://github.com/APIJSON/APIJSON-Demo/issues/11
https://github.com/Tencent/APIJSON/issues/220
https://github.com/Tencent/APIJSON/issues/171

33.前端是否需要了解表结构、关联关系、业务逻辑等?推荐的前后端接口对接方式是?

不需要。后端把请求 URL 和 JSON 提供给前端即可,这点和传统方式差不多,推荐用 APIAuto 上传,也可以用 YApi, Postman 等其它接口管理工具。
image
image

http://apijson.cn/api

34.学习和使用 APIJSON 需要达到什么样的技术水平?熟悉哪些相关的知识?

需要达到实习生的技术水平,如果是高校学生需要拿到实习 Offer,如果是社会人员需要能拿到社招 Offer。
首先前后端都要熟悉 HTTP 协议 和 JSON 协议,熟悉 APIAuto/Postman/YApi/Rap 等任意一个 HTTP 测试工具,另外

对于后端

  • 1.熟悉 MySQL/PostgreSQL 或其它数据库的安装、建表、数据记录读写

  • 2.对应数据库 SQL 语言/方言的使用

  • 3.对应后端语言及 IDE 的使用
    例如 Java 用 InteliJ IDEA/Eclipse,Go 用 Goland,C# 用 Visual Studio, PHP 用 PHPStorm, Python 用 PyCharm 等, Node.js 用 WebStorm/VS Code 等

  • 4.JDBC 驱动的接入
    如果是 Java 或其他 JVM 语言,则 Maven 依赖必须,其次最好了解 Gradle/Jar/源码 依赖。
    C#(NuGet), Go(import), JavaScript(NPM), PHP(Composer), TypeScript(NPM) 等其它语言见各自的库依赖/包管理方式。

  • 5.掌握 Web 框架
    例如 Java 的 SpringBoot 或 JFinal, Go 的原生网络库或 Gin/GoFrame 等第三方 Web 框架, Node.js 的 Koa 或 Express 等

  • 6.掌握 APIJSON 规范

对于前端

  • 1.熟悉前端(客户端)编程语言及 IDE 的使用
    例如 JavaSccript/TypeScript 用 WebStorm/VS Code,Android Java/Kotlin 用 Android Studio,iOS Objective C/Swift 用 XCode 等

  • 2.会使用对应前端语言及相关网络请求库对 HTTP API 发起 POST application/json 的请求并解析 JSON 结果
    例如 Axios, Ajax 等

如果连这种基本要求都达不到,那就先不要用 APIJSON,先学好基础再来!

35.如何使用 SpringBoot 的 application.yml 或 application.properties 来配置数据库账号及密码?为什么 APIJSON 并发下返回数据错误,和数据库实际表记录行的值对不上?

APIJSON 的所有解析类的实例都不能复用,全部由 APIJSONORM 或 apijson-framework 等扩展项目管理!
不要用 @Conponent/@Configuration/@Service 等注解在 Parser/ObjectParser/SQLConfig/SQLExecutor 等 APIJSON ORM 库的任何类及它们的任何子类!

如果想用 SpringBoot 的 application.yml 或 application.properties 来配置
https://www.google.com/search?q=%22springboot%22+AND+%22%E8%8E%B7%E5%8F%96%22+AND+%22%E9%85%8D%E7%BD%AE%22&oq=%22springboot%22+AND+%22%E8%8E%B7%E5%8F%96%22+AND+%22%E9%85%8D%E7%BD%AE%22&aqs=chrome..69i57j0i546j0i30i546.21445j0j7&sourceid=chrome&ie=UTF-8

则可以用以下任意一个方式
1.environment.getProperty
https://www.google.com/search?q=%22springboot%22+AND+%22environment.getProperty%22

2.PropertiesLoaderUtils.loadAllProperties
https://www.google.com/search?q=%22springboot%22+AND+%22PropertiesLoaderUtils.loadAllProperties%22

3.单独新建一个类

@Component
@ConfigurationProperties
public class Config { 
    public static String dbAccount;

    @Value("${mysql.account}")
    public void setDbAccount(String account) {
        dbAccount = account;
    }
}

然后再引用对应的值

public class DemoSQLConfig extends APIJSONSQLConfig {
    public String getDBAccount() {
        return Config.dbAccount;
    }
}

#I5LWSH:oracle 19c 并发访问下 数据错误

其它问题见 Closed Issues

https://github.com/Tencent/APIJSON/issues?q=is%3Aissue+is%3Aclosed

评论 (1)

TommyLemon 创建了任务
TommyLemon 关联仓库设置为腾讯开源/APIJSON
TommyLemon 修改了描述
TommyLemon 置顶等级设置为
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了标题
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
展开全部操作日志

如果还是没有找到答案,提问请带上这几个必要信息
1.当前使用的版本号
2.复现操作描述
3.使用代码
3.错误日志
4.图片或者视频
5.最好有demo

有详细的描述才能让作者快速地定位问题。

推荐填问卷,不仅能帮助完善必要信息,还可以自动给出一些问题的答案或建议
https://wj.qq.com/s2/10971431/2a09

再次强调:
提 bug 请发请求和响应的【完整截屏】,没图或者 【不是全屏】的自行解决!
开发者有限的时间和精力主要放在【维护项目源码和文档】上!
【描述不详细】 或 【文档/常见问题 已有答案】 的问题直接拒绝!!
【态度 不文明/不友善】的可能会被拉黑,问题也不予解答!!!

请求参数 JSON 中表名、字段名、关键词及对应的值都是大小写敏感、逗号敏感、分号敏感、空格敏感、换行敏感,
大部分情况都不允许空格和换行,表名以大写字母开头,不要想当然,请严格按照 设计规范 来调用 API #181

提问缺少必要信息(问题描述、复现步骤、相关截屏等)或者 【截屏只有请求不给响应结果】等是大忌,只会浪费彼此的时间,这也是业内很多开源作者的共识!!!如果你不认同这点,请大声告诉你项目组的所有测试同事:以后给你提 bug 简单一两句话就够了,不要给截屏、日志、步骤,或者只给一点信息,每次都要问才继续再给一点,磨磨蹭蹭往死里折腾你!!!

QQ技术群1 开始 3 个数字(1,2,3位):607

image
image
image

某热门 CMS 开源项目:
IMG_20220422_210217
IMG_20220513_153853

Apache 基金会下某热门开源项目:
IMG_20220517_110055
IMG_20220519_113559
IMG_20220519_113644
IMG_20220519_113734
Screenshot_2022-05-20-20-44-19-773_com tencent mm



以上截屏来源于其它开源项目的 GitHub/官网/技术群等,如有任何不妥,请 提 Issue 或联系 tommylemon@qq.com 调整,谢谢 ^_^
The screenshots above are from other projects' GitHub/official website. If there's any problem, please New Issue or email tommylemon@qq.com, and we'll edit the content, thank you ^_^

TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述
TommyLemon 修改了描述

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
485581 tommylemon 1578925347
Java
1
https://gitee.com/Tencent/APIJSON.git
git@gitee.com:Tencent/APIJSON.git
Tencent
APIJSON
APIJSON

搜索帮助