Comments (17)
不行 不行 求nodejs实现
from apijson.
@testsla 可以用敏捷开发方式,一开始只做核心功能,其它所有功能都不管。等核心功能实现了再加入其它功能。性能一开始也不考虑,先实现后优化。
APIJSON核心功能是查询,查询的核心功能是 Request转SQL 和 "key@":path引用赋值。对引用赋值的解析是难点,也是APIJSON实现自动化的关键。
只要这两个实现了,其它的功能都比较容易加上。
from apijson.
@TommyLemon 周五吃了老板的鱿鱼,所以没回复。
我正在思考如何实现,不懂之处请教。
from apijson.
@lgh06 GraphQL可不止是要定义Model(官方叫Type)啊,还要针对每个需求定义Schema,才能按照Schema的结构来请求,灵活性仅仅限于字段和成语接龙式的嵌套(A schema里包含B schema,B schema里包含A schema,就可以写成
{
A {
B {
A {
B {
...
}
}
}
}
}
这种,但不能是
{
A {
}
B {
}
}
也不能是
{
A {
}
C {
}
}
等其它任何结构,除非后端再写对应的一大堆Schema。
而且如何查询数据库、如何控制权限还都得后端自己搞定。
APIJSON的开放查询请求不限制结构内容,传任何结构和内容都行,都是APIJSONLibrary这个ORM库完全自动化解析成SQL语句,期间根据@MethodAccess注解配置自动校验权限。
https://www.zhihu.com/question/61648519
1.搜索内容【以…结束】的动态
{
"[]": {
"count": 5,
"page": 0,
"Moment": {
"content$": "%…"
}
}
}
2.搜索内容【以A开始】的动态+【内部】放发布者User
{
"[]": {
"count": 5,
"page": 0,
"Moment": {
"content$": "A%",
"User": {
"id@": "/userId"
}
}
}
}
3.搜索内容【包含A】的动态+【外部】放发布者User
{
"[]": {
"count": 5,
"page": 0,
"Moment": {
"content$": "%A%"
},
"User": {
"id@": "/Moment/userId"
}
}
}
4.每个Moment内比3多了一个评论Comment列表
{
"[]": {
"count": 5,
"page": 0,
"Moment": {
"content$": "%A%"
},
"User": {
"id@": "/Moment/userId"
},
"[]": {
"count": 3,
"Comment": {
"momentId@": "[]/Moment/id"
}
}
}
}
5.将4中的评论列表项Comment去包装(提取一层)
{
"[]": {
"count": 5,
"page": 0,
"Moment": {
"content$": "%A%"
},
"User": {
"id@": "/Moment/userId"
},
"Comment[]": {
"count": 3,
"Comment": {
"momentId@": "[]/Moment/id"
}
}
}
}
6.将5中的User只返回id,sex,name
{
"[]": {
"count": 5,
"page": 0,
"Moment": {
"content$": "%A%"
},
"User": {
"@column": "id,sex,name",
"id@": "/Moment/userId"
},
"Comment[]": {
"count": 3,
"Comment": {
"momentId@": "[]/Moment/id"
}
}
}
}
APIJSON和GraphQL的初步详细对比
https://juejin.im/post/5ae80edd51882567277433cf
from apijson.
@lgh06 @yuu2lee4 另一个 APIJSON Node 版本也出来了,
支持单表、关联、数组、分页查询等,有比较完善的文档,
我测试过,除了项目提供的表有 utf8 编码问题导入不了 (用我自己的表测试可以),其它都可用。
作者是微医的,已经写了不少测试用例,在他公司内部用起来了。
点 Star 鼓励作者继续完善吧 ^_^
https://github.com/kevinaskin/apijson-node
from apijson.
@testsla 太好了,领导说要转node,但现在看来还要过一段时间。你实现一个node版到时候我可以参考下嘿嘿😜
1.解析请求的JSON结构:
1)Parser.parseRequest() 将请求字符串用URLDecoder解码(经测试POST请求不需要转码,我会去掉这个多余的过程),然后还原为对象JSONObject:{}
2)Parser.parseResponse() 整体解析,主要解析数组JSONArray:[],并将对象JSONObject:{}交给ObjectParser解析
3)ObjectParser.parse() 解析对象JSONObject:{}
2.解析请求的JSON内容:
1)ObjectParser.parse() 解析键值对key:value、子对象、子数组等,其中子对象和子数组回调给Parser解析,其它键值对交给SQLConfig解析
2)SQLConfig.newSQLConfig() 解析表对象内容Table:{},getSQL()函数会根据表对象内容生成SQL语句
3.执行SQL语句并返回JSONObject:
1)SQLExecutor.execute() 通过SQLConfig.getSQL()获得SQL语句
2)SQLExecutor.execute() 通过JDBC连接MySQL数据库,执行SQL语句实现增删改查并返回结果,缓存查询结果
4.原路返回结果并用结果替换原来的请求内容
1)SQLExecutor -> ObjectParser -> Parser
from apijson.
@testsla 这样啊,祝你找到满意的工作
from apijson.
@testsla 看看这个,自动生成markdown文档,可展开/收起的带高亮格式化JSON,嘿嘿
http://apijson.org/auto/
from apijson.
@testsla Nodejs现成的SQL builder有 knexjs ,难点在于解析字符串、和APIJSON用同一套规范解析字符串…… 一堆正则 一堆if else等着呢…… 兄弟,搞么?……
from apijson.
@lgh06
看了下knex,它是一个面向对象的ORM库,和Java的Hibernate, C#的Linq原理一样。
// Query both of the rows.
.then(function() {
return knex('users')
.join('accounts', 'users.id', 'accounts.user_id')
.select('users.user_name as user', 'accounts.account_name as account');
})
这种调join,select等函数的静态封装方式都做不了APIJSON的JSON转SQL语句这个功能的。
静态封装意味着得后端根据每个接口去具体地手写代码封装SQL,而APIJSON提倡将前端传的JSON完全自动化生成SQL语句,不需要后端针对接口写具体的解析代码。
APIJSON-Java-Server里的Library也是一个ORM库,它通过SQLConfig来动态封装SQL语句。
https://github.com/TommyLemon/APIJSON/blob/master/APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java
from apijson.
不应该把knexjs归类为ORM,而应该归类为 辅助SQL语句生成的 一个库。
用Java来定义Model是第一步,必选项……
我现在是非常懒,不想一个一个去定义model,而graphql要求定义model,所以找了找类似的。
目前来看,参照parse和leancloud,后端使用mongodb吧……
(nodejs是个动态类型的语言,用JSON.parse/JSON.stringify就能在json和对象间转换,没必要学java去定义各种model和字段名…… mongodb也不要求必须定义字段类型…… node还是和mongodb配……)
(其实后端逻辑减少了之后,前端的逻辑会相应增加,各种查询的约束条件、列选择,都写在了前端中…… )
from apijson.
@lgh06 APIJSON目前写model都是为了权限管理,只需要3行代码就能配置一张表的权限。
https://my.oschina.net/tommylemon/blog/889074
如果你不需要自动化的权限控制,可以改下全局配置,那就一行代码都不用写了。
from apijson.
@lgh06 关于前端逻辑增加,这个是定制后端返回的数据内容和结构必然会带来的问题,不过APIJSON提供了一套统一且简单清晰的规范以及丰富的示例:
设计规范
加上APIJSON提倡后端把 测试用例(请求的URL和JSON参数)填好上传到APIJSONAuto接口管理工具
http://apijson.cn/
所以前端直接复制过来就行了。
Android,iOS客户端可以复制右侧自动生成的代码。
用APIJSON,请求代码就不是问题了。
from apijson.
确实牛逼……
在我综合看了
http://apijson.cn/
https://github.com/TommyLemon/APIJSONAuto
优酷的视频 http://i.youku.com/apijson
掘金的文章 https://juejin.im/post/5ae80edd51882567277433cf
本项目README中的链接
本项目中的Document.md
我好像懂了。
建议:
- 没必要写其它语言的后端实现了,维护好Java+MySQL就很牛逼了。
- 将项目中的pages另存为一份ppt?方便一下windows用户……
- 将文档写得详细一些,尤其是和graphql/swagger这种功能有重合、类似的,做对比
- 将文档(wiki、readme.md、document.md、本项目的结构说明、本issue以及其它issue中您贴的博文链接和java文件的作用说明)集中在一个文件中,不要分散在各处。来回跳着看,大神估计可以hold住,小白直接蒙圈了……
- 详细说明 APIJSONAuto项目、apijson.cn的作用,如何配合才能实现自动生成代码,我第一眼看上去其实是懵逼的(没看优酷视频的情况下)
- 将apijson.cn右侧字体适当缩小,或者限制代码块的高度,增加滚动条,方便总览全篇内容,方便copy代码。
- 写明目前服务端只支持Java+MySQL
暂时写这么多。
感谢博主指导。
from apijson.
@lgh06 哈哈,非常感谢。
from apijson.
from apijson.
@yuu2lee4 APIJSON Node 版已经有了,给热心的开发者点 Star 支持下吧 ^_^
https://github.com/TEsTsLA/apijson
from apijson.
Related Issues (20)
- 都上3D数字孪生了,2D的WEB组态和大屏可视化未来的发展在哪里?趋势是基于页面嵌套、蓝图连线等新技术,与功能业务应用融合
- 页面嵌套、蓝图连线,在WEB组态大屏和前端界面开发上的应用——UIOTOS前端零代码设计理念
- 页面嵌套,界面套娃,除了用iframe,还有其他方式吗?
- 前端开发可以不需要代码了吗?用连线代替脚本开发,复杂连线和界面,通过页面嵌套可以轻松解决!
- UIOTOS前端零代码应用 蓝图连线+嵌套封装 实现MQTT输入0、1切换门禁开和关
- 什么可以替代iframe? HOT 1
- 如果出现一个工具,可以让前端开发彻底不用再手写UI,这个工具意义大吗?干货!
- apijson是否支持及联删除 HOT 4
- 【联表查询速度极慢】 HOT 3
- [Bug] MySQL版本8.0以上,正则~,会出现问题!大佬们怎么解决的 HOT 1
- 【咏创】后端开发 使用 APIJSON 案例:一个公寓租赁平台包括管家端、用户端、物业端、pc管理端
- 【上海瀚普】web前端 使用 APIJSON 案例:top小程序是一个大型的crm系统。主要目的是提升客户之间的关系,对客户进行评价打分,与客户互动和对数据的跟踪。
- 【清研灵智】高级前端 使用 APIJSON 案例:热线管理平台(后台+大屏)
- 【易开业】前端开发 使用 APIJSON 案例:服务系统项目:pc端的,主要是为公司的客户提供个税,会计,工商注册这方面的需求模块
- 【上海出奇】JAVA工程师: 熟练掌握 APIJSON 等框架技术
- 【上市公司】【亚信科技】初级前端 使用 APIJSON 案例:线上购物微信小程序
- 【Job 招聘】智算科技 全栈工程师 15-25K:熟悉APIJSON 的使用 HOT 1
- 【项目需求】企业信息化管理Java开发平台设计 预估总价:30000元,核心使用APIJSON
- 【华为云】开发者联盟在知乎推荐了 APIJSON
- [Huawei][Cloud]Developer Union recommended APIJSON at Zhihu
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apijson.