快速开发一个问卷调查云应用(后端)
程序员文章站
2022-06-12 13:38:41
...
通过Sails.js开发RESTful API
阅读这篇blog大约需要5分钟
通过一个小例子MVP来学习一下Sails.js这个框架。模拟的场景需求是设计一个问卷调查。
后端使用Sails.js,前端通过OpenUI5来实现。
The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time. --Tom Cargill
创建模型
简单设计了一下,一个问卷会包含多个问题,每个用户填完后就是一个反馈。每个反馈里包含了全部的问题回答。主要包括这些数据:
- Questionaires 问卷
- Questions 问题
- Feedbacks 反馈
- Answers 每个问题的回答
依次通过sails的命令来创建api:
sails generate api Questionaires
sails generate api Questions
sails genreate api Feedbacks
sails genrate api Answers
Sails.js会通过Waterline的ORM来自动根据模型定义来自动生成表和关系。而且Sails.js默认自带了一个简单的数据库实现,它是通过JSON文件保存的。
自定义API
开发一个自定义的api,可以通过action来完成。
sails generate action /feedback/create
它会自动生成文件controller/feedback/create.js,定制代码写在create.js中。这里是接口函数代码:
fn: async function (inputs) {
Questionnaires.create(q);
const feedback = {
"fb_owner": inputs.id
};
const createdFeedback = await Feedbacks.create(feedback).fetch();
let answers = inputs.answers.map(
(input) => {
input.feedback = createdFeedback.id;
return input;
}
);
const createdAnswers = await Answers.createEach(answers).fetch();
return createdFeedback;
}
自定义路由
修改config/routes.js文件,增加一行配置:
'POST /api/v1/feedback/create' : {action: 'feedback/create'},
API测试
http://localhost:1337/api/v1/feedback/create
POST数据创建一个问卷反馈:
{
"id": 11,
"answers": [
{
"question": 21,
"answer": 0
},
{
"question": 22,
"answer": 1
},
{
"question": 23,
"answer": 2
}
]
}
返回数据:
states 201 ok.
后台数据创建成功。
{
"createdAt": 1581583005224,
"updatedAt": 1581583005224,
"id": 9,
"fb_owner": 11
}
小结
在这个例子中只是用到了Sails.js里API的一小部分功能,它是一个类似Ruby on rails的JS框架,个人感觉还是很方便的,对于原型demo开发,能够节约不少的时间。
项目代码
- https://github.com/rangwei/cloud-blogs/tree/master/b08/arctic-db
参考阅读
- https://sailsjs.com/documentation/concepts
上一篇: 揭秘:历史上真实的董鄂妃是何来历?