系统设计与分析 作业3

2019-05-25 09:31:14 浏览数 (1)

1. 调研经验

在本次项目中,我负责了调研工作,其中用到了“问卷星”这一平台。 在这个平台上可以比较轻松地设计和发布问卷,并查看统计结果。

比较需要花心思的是问题的设置,在设置某两道题的选项时,花费了较多心思。

最后,分析调查结果,写成文档,发布到项目的github上 github 调研报告

2. 后台开发学习

2.1 nodejs express使用https

微信小程序的访问要求必须是Https协议,所以我们可以使用nodejs的express框架 参考 nodejs express使用https 主要过程是设置认证,监听SSL端口,并设置路由响应

代码语言:javascript复制
var app = require('express')();
var fs = require('fs');
var http = require('http');
var https = require('https');

// https设置认证
var privateKey  = fs.readFileSync('/path/to/private.pem', 'utf8'),
var certificate = fs.readFileSync('/path/to/file.crt', 'utf8');
var credentials = {key: privateKey, cert: certificate};

var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app); // https启动服务器
var PORT = 18080;
var SSLPORT = 18081;

httpServer.listen(PORT, function() {
    console.log('HTTP Server is running on: http://localhost:%s', PORT);
});
httpsServer.listen(SSLPORT, function() { // https监听端口
    console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT);
});

// Welcome
app.get('/', function(req, res) {
    if(req.protocol === 'https') {
        res.status(200).send('Welcome to Safety Land!');
    }
    else {
        res.status(200).send('Welcome!');
    }
});

2.2 Restful的理解,Restful 优缺点

参考 Restful的理解,Restful 优缺点

我们知道restful是面向资源的,但并不是任何场景都适合用restful的思想。 比如

  1. 批量删除数据,DELETE /tickets/12就不合适了
  2. 当查询操作的参数过长时,GET也不合适,比如查询1000个订单的信息,GET /tickets就得传一个长度为1000的数组
  3. 对同一个事物的不同属性进行更新,就不适合全部用PUT ticket/12一个域名来一概而论。(虽然也能传递参数,但还是略显麻烦)

所以

  1. 简单查询尽量用GET,复杂查询和更新用POST,用的最多;
  2. 不用PUT和DELETE,避免增加复杂度。 看看BAT的很多openapi,也是表面上用着restful,实际没有严格遵守,还是以get和post为主。

详细做法如下:

代码语言:javascript复制
//根据订单id获取订单
GET oms/order/queryOrderById?id=value1&param2=value2
 
//根据订单id List获取订单
POST oms/order/queryOrderByIdList
 
//根据条件查询订单,带分页参数
POST oms/order/queryOrderByCondition
 
//更新订单收款状态
POST oms/order/updateOrderCollectionStatus
 
//批量更新订单收款状态
POST oms/order/updateOrderCollectionStatusInBatch
 
//批量更新订单收款状态
POST oms/order/updateOrderCollectionStatusInBatch
 
//批量删除订单,带操作来源
POST oms/order/deleteOrderInBatch

0 人点赞