SEARU.ORG
当前位置:SEARU.ORG > Linux 软件 > 正文

API发布平台 ibird-simple

ibird-simple是一个基于express的非常简单的API发布平台,你只需要编写一个模型文件就能完成对模型的CURD操作,支持对模型的批量添加,分页查询,简单过滤,条件更新,批量删除等操作。

一、初始化:

  • git clone https://github.com/DobbieYin/ibird-simple.git

  • npm install

  • npm start

二、技术栈:

mongodb:数据库
node:后台

三、状态设定:

routing:路由状态,主要负责参数处理,参数校验
curding:原子性操作状态,主要负责完成对数据的原子性处理

四、回调机制:

进入路由状态时回调:startRoute,参数处理,参数校验等
开始原子性操作前回调:startCurd,根据参数生成持久化对象,查询前分页,排序处理等
完成原子性操作后回调:endCurd,其他更新操作,查询后数据处理等
完成路由状态时回调:endRoute,返回前处理

五、请求流程:

1.拦截所有模型持久化请求
2.过滤模型编码
3.进入路由状态
4.进入原子性操作状态
5.执行原子性操作
6.完成持久化状态
7.完成路由状态

注意:任一阶段都有权利结束请求。

六、CURD

* create:创建
    接口地址:http://www.test.com/api/modelacts?m=modelcode
    请求方式:POST
    操作类型:批量
    参数描述:请求体为json数组结构,json符合数据模型规范
    `

* update:更新
    接口地址:http://www.test.com/api/modelacts?m=modelcode
    请求方式:PUT
    操作类型:单个
    参数描述:请求体为json结构,json格式如下:
                cond(更新条件)
                doc(更新文档,符合数据模型规范)

* read:读取
    接口地址:http://www.test.com/api/modelacts?m=modelcode
    请求方式:GET
    操作类型:分页
    参数描述:请求参数
                flag(0为分页查询,1为全部查询,2仅获取模型信息,默认0)
                page(当前页,默认0)
                mds(是否返回模型信息,0不返回,1返回。默认0)
                size(每页条数,默认20)
                sort(排序字符串,例如"field -test",字段前不写符号表示顺序,"-"号表示逆序)
                field1~n(字段编码,可以填写所有模型字段的编码作为http参数,如需同时匹配多个值,则用英文逗号分隔,也支持正则表达式)

* delete:删除
    接口地址:http://www.test.com/api/modelacts?m=modelcode
    请求方式:DELETE
    操作类型:批量
    参数描述:请求体为json数组结构,json符合数据模型规范,如需同时匹配多个值,则用英文逗号分隔

七、测试示例

* create:创建
    POST /api/modelacts?m=depts HTTP/1.1
    Host: localhost:3000
    Content-Type: application/json
    Cache-Control: no-cache
    Postman-Token: 0b45cb18-d769-7cfd-1df9-196175ed80d1

    [
      {
        "code": "d1006",
        "name": "部门6"
      },
      {
        "code": "d1007",
        "name": "部门7"
      },
      {
        "code": "d1008",
        "name": "部门8"
      },
      {
        "code": "d1009",
        "name": "部门9"
      }
    ]
    ————————————————————————————————————————————————————
    [
      {
        "__v": 0,
        "code": "d1006",
        "name": "部门6",
        "_id": "56930cf91a7bdcca139ffb6c",
        "created": "2016-01-11T02:01:29.319Z"
      },
      {
        "__v": 0,
        "code": "d1007",
        "name": "部门7",
        "_id": "56930cf91a7bdcca139ffb6d",
        "created": "2016-01-11T02:01:29.321Z"
      },
      {
        "__v": 0,
        "code": "d1008",
        "name": "部门8",
        "_id": "56930cf91a7bdcca139ffb6e",
        "created": "2016-01-11T02:01:29.322Z"
      },
      {
        "__v": 0,
        "code": "d1009",
        "name": "部门9",
        "_id": "56930cf91a7bdcca139ffb6f",
        "created": "2016-01-11T02:01:29.322Z"
      }
    ]

* update:更新
    PUT /api/modelacts?m=depts HTTP/1.1
    Host: localhost:3000
    Content-Type: application/json
    Cache-Control: no-cache
    Postman-Token: c2f5e818-7ff2-65d6-6927-f4c66e01cdc5

    {
      "cond": {
        "code": "d1003"
      },
      "doc": {
        "name": "修改后部门33333"
      }
    }
    ————————————————————————————————————————————————————
    {
      "ok": 1,
      "nModified": 1,
      "n": 1
    }

* read:读取
    GET /api/modelacts?m=depts&page=0&size=2 HTTP/1.1
    Host: localhost:3000
    Content-Type: application/json
    Cache-Control: no-cache
    Postman-Token: 81d271fa-7923-be65-8eb9-1ddff71637ab
    ————————————————————————————————————————————————————
    {
      "data": [
        {
          "_id": "56927e6ac0eb3594399e7145",
          "code": "d1001",
          "name": "部门1",
          "__v": 0,
          "created": "2016-01-10T15:53:14.458Z"
        },
        {
          "_id": "56927e89c0eb3594399e7147",
          "code": "d1003",
          "name": "部门33333",
          "__v": 0,
          "created": "2016-01-10T15:53:45.093Z"
        }
      ],
      "totalels": 7,
      "totalpgs": 4,
      "page": 0,
      "size": 2
    }

* delete:删除
    DELETE /api/modelacts?m=depts HTTP/1.1
    Host: localhost:3000
    Content-Type: application/json
    Cache-Control: no-cache
    Postman-Token: 157aa1d8-a0b8-8b96-2aab-3de1286bb100

    {
      "_id": {
        "$in": [
          "56930cf91a7bdcca139ffb6c",
          "56930cf91a7bdcca139ffb6d"
        ]
      }
    }
    ————————————————————————————————————————————————————
    {
      "ok": 1,
      "n": 2
    }

八、自定义路由

项目启动时,会动态加载/server/routes文件夹内的所有路由文件,并根据文件名称动态注册路由
如/server/routes/test1.js 对应路由地址 http://ip:port/api/routes/test1,
如/server/routes/test2.js 对应路由地址 http://ip:port/api/routes/test2,
如/server/routes/test3.js 对应路由地址 http://ip:port/api/routes/test3.

路由文件内的路由定义遵循 express路由规范(http://www.expressjs.com.cn/4x/api.html#router)

示例:/server/routes/test.js
```
var router = require('express').Router();
router.get('/login', function (req, res) {
    res.end('/login....');
});
module.exports = router;
```

调用:
GET /api/routes/test/login HTTP/1.1
Host: localhost:3000
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: e94b0297-a711-7004-67ae-3f952c8c7da6
————————————————————————
/login....

未经允许不得转载:SEARU.ORG » API发布平台 ibird-simple

赞 (0)
分享到:更多 ()

评论 0