有没有工具可以直接将 SQL 转化为可供前端调用的 API?

2018-06-18 15:49:59 +08:00
 lengjingxu
3772 次点击
所在节点    数据库
24 条回复
ryuzaki113
2018-06-19 15:43:54 +08:00
TommyLemon
2018-06-26 17:24:11 +08:00
@lhx2008 所以就有了 APIJSON,支持自动化的复杂查询和简单增删改查,通过自动化的 权限管理 和 预编译及白名单机制 保证安全性。还有完整的 demo、文档、调试工具和视频教程,欢迎使用^_^
https://github.com/TommyLemon/APIJSON
TommyLemon
2018-06-26 17:32:37 +08:00
推荐 APIJSON, 后端接口和文档自动化,前端(客户端) 定制返回 JSON 的数据和结构。


### 1.单表查询
```js
{
"User": {
"sex": 1
}
}
```
自动转换为
```sql
SELECT * FROM User WHERE sex = '1' LIMIT 0, 1
```


### 2.数组查询
```js
{
"[]": {
"count": 10,
"page": 1,
"User": {
"sex": 1
}
}
}
```
自动转换为
```sql
SELECT * FROM User WHERE sex = '1' LIMIT 10, 20
```

### 3.应用场景示例:


#### 获取用户
请求:
<pre><code class="language-json">{
"User":{
 }
}
</code></pre>

[点击这里测试]( http://apijson.cn:8080/get/{"User":{}})

返回:
<pre><code class="language-json">{
"User":{
"id":38710,
"sex":0,
"name":"TommyLemon",
"tag":"Android&Java",
"head":"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000",
"date":1485948110000,
"pictureList":[
"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000",
"http://common.cnblogs.com/images/icon_weibo_24.png"
]
},
"code":200,
"msg":"success"
}
</code></pre>

<br />

#### 获取用户列表
请求:
<pre><code class="language-json">{
"[]":{
  "count":3,             //只要 3 个
  "User":{
    "@column":"id,name" //只要 id,name 这两个字段
  }
}
}
</code></pre>

[点击这里测试]( http://apijson.cn:8080/get/{"[]":{"count":3,"User":{"@column":"id,name"}}})

返回:
<pre><code class="language-json">{
"[]":[
{
"User":{
"id":38710,
"name":"TommyLemon"
}
},
{
"User":{
"id":70793,
"name":"Strong"
}
},
{
"User":{
"id":82001,
"name":"Android"
}
}
],
"code":200,
"msg":"success"
}
</code></pre>

<br />

#### 获取动态及发布者用户
请求:
<pre><code class="language-json">{
"Moment":{
},
"User":{
"id@":"Moment/userId" //User.id = Moment.userId
}
}
</code></pre>

[点击这里测试]( http://apijson.cn:8080/get/{"Moment":{},"User":{"id@":"Moment%252FuserId"}})

返回:
<pre><code class="language-json">{
"Moment":{
"id":12,
"userId":70793,
"date":"2017-02-08 16:06:11.0",
"content":"1111534034"
},
"User":{
"id":70793,
"sex":0,
"name":"Strong",
"tag":"djdj",
"head":"http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000",
"contactIdList":[
38710,
82002
],
"date":"2017-02-01 19:21:50.0"
},
"code":200,
"msg":"success"
}
</code></pre>

<br />

#### 获取类似微信朋友圈的动态列表
请求:
<pre><code class="language-json">{
"[]":{ //请求一个数组
"page":0,                     //数组条件
"count":2,
"Moment":{                     //请求一个名为 Moment 的对象
"content$":"%a%"          //对象条件,搜索 content 中包含 a 的动态
},
"User":{
    "id@":"/Moment/userId",       //User.id = Moment.userId 缺省引用赋值路径,从所处容器的父容器路径开始
"@column":"id,name,head"     //指定返回字段
},
"Comment[]":{ //请求一个名为 Comment 的数组,并去除 Comment 包装
"count":2,
"Comment":{
"momentId@":"[]/Moment/id" //Comment.momentId = Moment.id 完整引用赋值路径
}
}
}
}
</code></pre>

[点击这里测试]( http://apijson.cn:8080/get/{"[]":{"page":0,"count":2,"Moment":{"content$":"%2525a%2525"},"User":{"id@":"%252FMoment%252FuserId","@column":"id,name,head"},"Comment[]":{"count":2,"Comment":{"momentId@":"[]%252FMoment%252Fid"}}}})

返回:
<pre><code class="language-json">{
"[]":[
{
"Moment":{
"id":15,
"userId":70793,
"date":1486541171000,
"content":"APIJSON is a JSON Transmission Structure Protocol …",
"praiseUserIdList":[
82055,
82002,
82001
],
"pictureList":[
"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000",
"http://common.cnblogs.com/images/icon_weibo_24.png"
]
},
"User":{
"id":70793,
"name":"Strong",
"head":"http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000"
},
"Comment[]":[
{
"id":176,
"toId":166,
"userId":38710,
"momentId":15,
"date":1490444883000,
"content":"thank you"
},
{
"id":1490863469638,
"toId":0,
"userId":82002,
"momentId":15,
"date":1490863469000,
"content":"Just do it"
}
]
},
{
"Moment":{
"id":58,
"userId":90814,
"date":1485947671000,
"content":"This is a Content...-435",
"praiseUserIdList":[
38710,
82003,
82005,
93793,
82006,
82044,
82001
],
"pictureList":[
"http://static.oschina.net/uploads/img/201604/22172507_aMmH.jpg"
]
},
"User":{
"id":90814,
"name":7,
"head":"http://static.oschina.net/uploads/user/51/102723_50.jpg?t=1449212504000"
},
"Comment[]":[
{
"id":13,
"toId":0,
"userId":82005,
"momentId":58,
"date":1485948050000,
"content":"This is a Content...-13"
},
{
"id":77,
"toId":13,
"userId":93793,
"momentId":58,
"date":1485948050000,
"content":"This is a Content...-77"
}
]
}
],
"code":200,
"msg":"success"
}
</code></pre>


<br />

[在线测试]( http://apijson.org)


创作不易,您的支持是对作者的最大鼓励,右上角点 Star 支持下吧,谢谢 ^_^
TommyLemon
2018-06-26 17:33:36 +08:00
看样子这回复,既不支持 markdown,也不支持富文本啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/463883

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX