X Tutup
The Wayback Machine - https://web.archive.org/web/20201015013917/https://github.com/APIJSON/APIJSON/issues/39
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

讨论APIJSON的使用需求问题 #39

Closed
star7th opened this issue Jul 26, 2018 · 3 comments
Closed

讨论APIJSON的使用需求问题 #39

star7th opened this issue Jul 26, 2018 · 3 comments

Comments

@star7th
Copy link

@star7th star7th commented Jul 26, 2018

一开始看到这个项目的时候我是糊涂的。因为我没理解这个工具的用途是什么。
仔细看了一下原理,原来是相当于一个转换器,通过restful api 操作数据库,并返回一些内容。
但即使我知道了这点后,我还是表示相当惊讶——读数据库不是很简单的吗,为什么要写一个转换器?
再深入了解下,我才发现这是我的盲区。因为我是前端后端都会,大部分情况,我不需要转换器,我也很多情况下拥有读取数据库的能力。对我来讲读数据库就是一件很简单的事情。为了这么简单的事情专门写个转换器太麻烦了。但,我不需要,不代表别人不需要。我猜APIJSON的主要用户是app开发者,和部分纯前端开发者(极少接触过后端)。他们可能比较需要一种“用客户端请求就能操作数据库”的能力。
作者这种发现需求的能力值得赞扬。
然后,我提一下我个人的一些建议,仅供参考。
1,因为我曾经做过复杂后端开发,所以我想说下,很多情况下,从数据库到输出json这个过程的中间,是需要逻辑处理的。直接输出数据表字段仅仅是其中一种比例不高的情况。举一些例子。对于电商情形,ta要多次计算订单数据,更新多个表,中间还可能涉及到事务,最后才会输出sjon 。如果中间过程出错了右该如何回滚,如何容错。
所以,我建议你可以多思考下有没有可能在这里做个扩展,比如说暴露一些API或者函数钩子之类的,允许别人添加自定义的逻辑处理。这块水很深,需要细想。
2,因为我自己做过web前端开发,所以,我觉得,一个前端人员如果非要提前使用json接口来调试,不想等待后端修改,我可能更多用mock数据。所以我个人猜想前端开发人员对APIJSON的使用需求不会很强烈。也因此我为什么在上面猜测APIJSON的使用群里应该更多是app开发者。因为app开发者才更需要这种“用客户端请求就能操作数据库”的能力。当然可能是我想错了。毕竟我可能不清楚其他用户群体的需求。
3,你的技术选型不好。我看到你的做法是每种语言都搞一个server端。这是个无底坑。因为你每次做个更新都要各种语言实现一遍。如果没人指出这个问题,我觉得你以后会持续把自己的精力浪费在不必要的事情上。我个人建议,你可以深入学习一种后端语言,最好是node或者go,因为这两者通过一些工具都可以把代码打包,打包后则适合在各种环境下运行。这方面我只是浅层建议,你去调研一下吧。
4,我留意到这个APIJSON项目,是因为我的项目showdoc https://github.com/star7th/showdoc 。我会先保持观察,调研下需求有没有必要集成进来,或者用我自己的方式重新实现一遍深度整合进showdoc

@TommyLemon
Copy link
Member

@TommyLemon TommyLemon commented Jul 26, 2018

非常感谢你的意见与建议。

1.根据我个人的工作经历和圈子,
社交聊天、阅读资讯、影音视频、办公学习、部分小工具
等分类的应用(网站和App)大多数都是不需要对数据做比较多的处理的,
基本都是查出来给前端(客户端)展示,查询API也几乎不涉及事务,
用APIJSON既可以前端简单处理,也可以后端提供 远程函数 给前端调用,
Android源码 或到 http://apijson.org/auto 点右侧第3个按钮进入测试用例,会看到不少Demo。
简单的事务操作(增删改)可以用APIJSON的自动化API,其它的建议自己写。

对于 电商、银行、证券、股票 这种和钱强相关(不花钱没意义)的应用
确实需要做大量各种 打折返现、可视化报表、趋势预测 等处理,用APIJSON确实就麻烦了,
而且这类应用对安全性要求极高,我也不建议用APIJSON。
不过内容导购电商(严格说可能并不是电商,只是引流到其它电商平台)倒是可以用。

2.Mock API并不能替代APIJSON来很好的解决接口提供滞后的方法,
它会给前端不可避免地带来了额外的开发、部署和维护等成本。
当后端接口变更后(往往因为需求变更),Mock出的API得跟着改。
由于Node.js服务普遍使用单进程,可能一个小bug就导致进程终止,并且所有服务都不可用。
Mock生成的假数据很可能不符合业务需求,
例如 status 只有1,2,随机出来3,15,-100等,
需要写一堆繁琐的配置(类型、范围、长度等)才能比较准确;
即便前后端提前约定了接口的数据结构,
等真实接口开发完后还是很可能不一样(实现难度、需求更改等),
导致Mock API也得同步更改,并且调用接口的代码也要跟着调整解析方式。

APIJSON提供了自动化的7个增删改查API,APIAuto提供自动化的文档,
所以后端不用写接口、也不用写文档就能提供"接口"和"文档",
前端也不用开发、部署、维护Mock API,就可以完全定制数据和结构,要啥有啥。

3.我最擅长的是Java,所以APIJSON后端是用 Java实现 的,有个开发者提供了 C# 版本
每种主流语言都实现一遍 APIJSON协议 确实要很大的时间和精力,
所以APIJSON的后端实现我暂时只维护Java版本,其它语言的就交给热心的开发者了。

4.ShowDoc是个好项目,不过我在官网www.showdoc.cc没看到怎么测试接口哦,
如果没有的话建议加上,开发者是很需要这个功能的,有了后就不用再开一个Postman去测了。
如果你集成APIAuto自动化接口管理工具那就更好了,如果有问题我们可以再详细交流。

@TommyLemon TommyLemon closed this Jul 26, 2018
@TommyLemon
Copy link
Member

@TommyLemon TommyLemon commented Sep 15, 2019

APIJSON 3.7.0 已支持多表操作的事务
https://github.com/APIJSON/APIJSON/releases/tag/3.7.0

@TommyLemon
Copy link
Member

@TommyLemon TommyLemon commented Sep 15, 2019

@star7th APIJSON Node 版本也出来了,
支持单表、关联、数组、分页查询等,有比较完善的文档,
我测试过,除了项目提供的表有 utf8 编码问题导入不了 (用我自己的表测试可以),其它都可用。
作者是微医的,已经写了不少测试用例,在他公司内部用起来了。

点 Star 鼓励作者继续完善吧 ^_^
https://github.com/kevinaskin/apijson-node

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

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.
X Tutup