现在就是正式编写api了。这边我还是以之前那张 t_msd_msl_2 表为例子。具体的sql知识需要自己准备啦。
一般增删改使用post接口,走requestBody模式。故需引入中间件来解析。
//安装依赖
cnpm install --save body-parser
//app.js里引入
var bodyParser = require("body-parser");
app.use(
bodyParser.urlencoded({
extended: false,
})
); //post传参body格式
不多说,直接上代码。直接修改routes下的index.js。
首先定一下Conroller,表示index下的接口统一前缀,可以不定义。
var Controller = "/msdMsl";
5.1 增
router.post(Controller + "/add", function (req, res, next) {
var sql = `INSERT INTO t_msd_msl_2 (msl_id, msl, floor_life, unit, floor_environment, enabled)
VALUES ('${req.body.msl_id}', '${req.body.msl}', ${req.body.floor_life}, ${req.body.unit}, '${req.body.floor_environment}', '${req.body.enabled}')`;
db.result(sql)
.then(() => {
res.send(resultInfo());
})
.catch((error) => {
res.send(resultInfo(1, "", error.detail || error.hint));
});
});
5.2 删
router.post(Controller + "/delete", function (req, res, next) {
var sql = `delete from t_msd_msl_2 where msl_id = '${req.body.msl_id}'`;
db.result(sql)
.then((result) => {
if (result.rowCount == 1) {
res.send(resultInfo());
} else {
res.send(resultInfo(1, "", "msl_id错误"));
}
})
.catch((error) => {
res.send(resultInfo(1, "", error.detail || error.hint));
});
});
5.3 改
router.post(Controller + "/update", function (req, res, next) {
var sql = `update t_msd_msl_2 set msl = '${req.body.msl}',floor_life = ${req.body.floor_life},unit = ${req.body.unit},floor_environment = '${req.body.floor_environment}',enabled = '${req.body.enabled}' where msl_id = '${req.body.msl_id}'`;
db.result(sql)
.then((result) => {
if (result.rowCount == 1) {
res.send(resultInfo());
} else {
res.send(resultInfo(1, "", "msl_id错误"));
}
})
.catch((error) => {
res.send(resultInfo(1, "", error.detail || error.hint));
});
});
5.4 查
router.get(Controller + "/search", function (req, res, next) {
var sql = `select * from t_msd_msl_2 where 1=1`;
sql += req.query.msl_id ? `and msl_id like '%${req.query.msl_id}%'` : "";
sql += req.query.msl ? `and msl like '%${req.query.msl}%'` : "";
sql += req.query.floor_life ? `and floor_life = ${req.query.floor_life}` : "";
sql += req.query.unit ? `and unit = ${req.query.unit}` : "";
sql += req.query.floor_environment
? `and floor_environment like '%${req.query.floor_environment}%'`
: "";
sql += req.query.enabled ? `and enabled like '%${req.query.enabled}%'` : "";
db.result(sql)
.then((result) => {
res.send(resultInfo(0, result.rows));
})
.catch((error) => {
res.send(resultInfo(1, "", error));
});
});
5.5 分页查
router.get(Controller + "/searchPage", function (req, res, next) {
var sql = `select * from t_msd_msl_2 where 1=1`;
sql += req.query.msl_id ? `and msl_id like '%${req.query.msl_id}%'` : "";
sql += req.query.msl ? `and msl like '%${req.query.msl}%'` : "";
sql += req.query.floor_life ? `and floor_life = ${req.query.floor_life}` : "";
sql += req.query.unit ? `and unit = ${req.query.unit}` : "";
sql += req.query.floor_environment
? `and floor_environment like '%${req.query.floor_environment}%'`
: "";
sql += req.query.enabled ? `and enabled like '%${req.query.enabled}%'` : "";
db.result(sql)
.then((result) => {
var total = result.rowCount || 0; //总数
var size = Number(req.query.size) || 10; //每页显示数量
var page = Number(req.query.page) || 1; //当前页数
var start = (page - 1) * size;
sql += `limit ${size} offset ${start}`;
db.result(sql)
.then((back) => {
var obj = {
page: page,
size: size,
total: total,
list: [],
};
obj.list = back.rows;
res.send(resultInfo(0, obj));
})
.catch((err) => {
res.send(resultInfo(1, "", err));
});
})
.catch((error) => {
res.send(resultInfo(1, "", error));
});
});
5.6 swagger编写
/**,
* @swagger
* /api/msdMsl/add:
* post:
* tags:
* - MSL
* summary: 新增
* requestBody:
* description: 参数格式
* required: true
* content:
* application/json:
* schema:
* $ref: '#/components/msdMsl'
* responses:
* 200:
* description: 成功返回格式
* content:
* application/json:
* schema:
* $ref: '#/components/callback'
* /api/msdMsl/delete:
* post:
* tags:
* - MSL
* summary: 删除
* requestBody:
* description: 参数格式
* required: true
* content:
* application/json:
* schema:
* tyep: object
* properties:
* msl_id:
* type: string
* example: ''
* responses:
* 200:
* description: 成功返回格式
* content:
* application/json:
* schema:
* $ref: '#/components/callback'
* /api/msdMsl/update:
* post:
* tags:
* - MSL
* summary: 修改
* requestBody:
* description: 参数格式
* required: true
* content:
* application/json:
* schema:
* $ref: '#/components/msdMsl'
* responses:
* 200:
* description: 成功返回格式
* content:
* application/json:
* schema:
* $ref: '#/components/callback'
* /api/msdMsl/search:
* get:
* tags:
* - MSL
* summary: 查询所有
* parameters:
* - name: msl_id
* in: query
* description: 湿敏ID
* - name: msl
* in: query
* description: 湿敏等级
* - name: floor_life
* in: query
* description: 暴露时间
* - name: unit
* in: query
* description: 单位(0,小时;1,天;2,年)
* - name: floor_environment
* in: query
* description: 暴露环境
* - name: enabled
* in: query
* description: 是否可用
* responses:
* 200:
* description: 成功返回格式
* content:
* application/json:
* schema:
* $ref: '#/components/callback'
* /api/msdMsl/searchPage:
* get:
* tags:
* - MSL
* summary: 分页查询
* parameters:
* - name: msl_id
* in: query
* description: 湿敏ID
* - name: msl
* in: query
* description: 湿敏等级
* - name: floor_life
* in: query
* description: 暴露时间
* - name: unit
* in: query
* description: 单位(0,小时;1,天;2,年)
* - name: floor_environment
* in: query
* description: 暴露环境
* - name: enabled
* in: query
* description: 是否可用
* - name: page
* in: query
* description: 当前页数
* schema:
* type: integer
* default: 1
* - name: size
* in: query
* description: 每页数量
* schema:
* type: integer
* default: 10
* responses:
* 200:
* description: 成功返回格式
* content:
* application/json:
* schema:
* $ref: '#/components/callback'
* components:
* msdMsl:
* tyep: object
* properties:
* msl_id:
* type: string
* description: 湿敏ID
* example: ''
* msl:
* type: string
* description: 湿敏等级
* example: ''
* floor_life:
* type: integer
* description: 暴露时间
* example: 10
* unit:
* type: integer
* description: 单位(0,小时;1,天;2,年)
* enum:
* - 0
* - 1
* - 2
* example: 0
* floor_environment:
* type: string
* description: 暴露环境
* example: ''
* enabled:
* type: string
* description: 是否可用
* example: 'Y'
* callback:
* type: object
* properties:
* Code:
* type: integer
* format: int64
* example: 0
* Data:
* type: array
* example: []
* Message:
* type: string
* example: ''
* securitySchemes:
* Authorization:
* type: apiKey
* name: Authorization
* in: header
*
*/
刷新页面,是不是就像样了。还差一步,就是把登录验证加上。
具体的sql语句我就不细讲了,每个需求都不一样。