The Wayback Machine - https://web.archive.org/web/20210907054119/https://github.com/Tencent/APIJSON/issues/36
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

提问前必看 / Read me before asking #36

Open
TommyLemon opened this issue Jun 19, 2018 · 3 comments
Open

提问前必看 / Read me before asking #36

TommyLemon opened this issue Jun 19, 2018 · 3 comments

Comments

@TommyLemon
Copy link
Collaborator

@TommyLemon TommyLemon commented Jun 19, 2018

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

1.尝试在历史问题搜索答案。
2.尝试阅读通用文档或看视频教程找到答案。
3.尝试阅读示例代码找到答案。
4.尝试自己检查或试验以找到答案。
5.尝试阅读源代码以找到答案。

如果以上都尝试过了请提一个新的issue
参考提问的智慧

常见问题

1.如何定制业务逻辑?

在后端编写 远程函数,可以拿到 session、version、当前 JSON 对象、参数名称 等,然后对查到的数据自定义处理

#101

2.如何控制权限?

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

#12

3.如何校验参数?

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

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

4.如何生成文档?

用 APIAuto(https://github.com/TommyLemon/APIAuto)
#85

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

用对象关键词 @combine,例如 "@combine":"name~,tag~"

#107

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

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

https://gitee.com/Tencent/APIJSON/issues/I1JTYH

如果使用网页工具测试报错,则很可能是 Chrome 80+ 强制 same-site Cookie 的策略导致,可以改用 Postman 或修改 Chrome 设置

#166

7.和 GraphQL 的区别

GraphQL 是用来聚合和过滤数据的网关,不提供增删改查功能;APIJSON 提供万能的增删改查 API,零代码实现各种简单的和复杂的需求
#205

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

APIJSON 不是文档工具、也不是测试工具,配套的 APIAuto 才是 HTTP 接口 的文档/测试工具
#27

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

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

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

APIJSONBoot 对比 SSM/SSH 等开发效率可提升 20 倍以上
#132

11.如何使用自增主键?

DemoSQLConfig static 代码块中重写 SIMPLE_CALLBACK 的 newId 方法,return null 即可
#186

12.如何自定义主键名称?

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

13.如何实现多数据源?

可以在 DemoSQLConfig 中根据 database, schema, table 或者其它方式来区分,给 getDBUri 返回不同的 uri
#148

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

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

也可以使用或参考其他开发者贡献的鉴权方式
#286

15.如何自动插入 create_time, update_time, creator_id, is_deleted 之类的字段?

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

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

在你用的框架类似 Demo 新增几个接口调用 DemoParser 即可,
APIJSONController 只是简单封装,可以不继承,
例如 JFinal 版 Demo 中的 DemoController 就没有继承它,而是继承 JFinal 的 Controller。
#201 (comment)

建议直接把 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.如何一次性查全部数据/如何一次性查所有表记录?

不支持,必须有最大数量限制前端传参 count 的值(count: 0 取最大值,不传则为默认值 Parser.getDefaultQueryCount),
可在 DemoParser 重写 Parser.getMaxQueryCount。
另外 query: 2 是指同时查数据和数量。
https://github.com/Tencent/APIJSON/blob/master/Document.md#3.2

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

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

其它问题见 Closed Issues

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

@TommyLemon
Copy link
Collaborator Author

@TommyLemon TommyLemon commented Jun 19, 2018

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

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

@TommyLemon TommyLemon pinned this issue Jan 25, 2019
@TommyLemon TommyLemon self-assigned this Mar 2, 2019
@Tencent Tencent deleted a comment from shanhan0 Dec 17, 2020
@zsh19950418
Copy link

@zsh19950418 zsh19950418 commented Dec 25, 2020

请问下支持 (select * from admin where trackId like '1/10/%' or trackId='1/10') 吗

@TommyLemon
Copy link
Collaborator Author

@TommyLemon TommyLemon commented Dec 25, 2020

请问下支持 (select * from admin where trackId like '1/10/%' or trackId='1/10') 吗

支持,但不要在这里提问,直接 New Issue 新开一个
/get

{
    "[]": {
        "Admin": {
            "trackId$": "1/10/%",
            "trackId": "1/10",
            "@combine": "trackId$,trackId"
        }
    }
}

http://apijson.org/api/
image

多看看文档
https://github.com/Tencent/APIJSON/blob/master/Document.md#3.2

@TommyLemon TommyLemon changed the title 提问前必看 提问前必看 / Read me before ask Jan 3, 2021
@TommyLemon TommyLemon changed the title 提问前必看 / Read me before ask 提问前必看 / Read me before asking Jan 3, 2021
@Tencent Tencent locked and limited conversation to collaborators Mar 9, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.