1. 調(diào)研經(jīng)驗
在本次項目中,我負責了調(diào)研工作,其中用到了“問卷星”這一平臺。
在這個平臺上可以比較輕松地設(shè)計和發(fā)布問卷,并查看統(tǒng)計結(jié)果。

比較需要花心思的是問題的設(shè)置,在設(shè)置某兩道題的選項時,花費了較多心思。


最后,分析調(diào)查結(jié)果,寫成文檔,發(fā)布到項目的github上
github 調(diào)研報告
2. 后臺開發(fā)學習
2.1 nodejs express使用https
微信小程序的訪問要求必須是Https協(xié)議,所以我們可以使用nodejs的express框架
參考 nodejs express使用https
主要過程是設(shè)置認證,監(jiān)聽SSL端口,并設(shè)置路由響應(yīng)
var app = require('express')();
var fs = require('fs');
var http = require('http');
var https = require('https');
// https設(shè)置認證
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啟動服務(wù)器
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監(jiān)聽端口
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 優(yōu)缺點
參考 Restful的理解,Restful 優(yōu)缺點
我們知道restful是面向資源的,但并不是任何場景都適合用restful的思想。
比如
- 批量刪除數(shù)據(jù),
DELETE /tickets/12就不合適了 - 當查詢操作的參數(shù)過長時,
GET也不合適,比如查詢1000個訂單的信息,GET /tickets就得傳一個長度為1000的數(shù)組 - 對同一個事物的不同屬性進行更新,就不適合全部用
PUT ticket/12一個域名來一概而論。(雖然也能傳遞參數(shù),但還是略顯麻煩)
所以
- 簡單查詢盡量用GET,復(fù)雜查詢和更新用POST,用的最多;
- 不用PUT和DELETE,避免增加復(fù)雜度。
看看BAT的很多openapi,也是表面上用著restful,實際沒有嚴格遵守,還是以get和post為主。
詳細做法如下:
//根據(jù)訂單id獲取訂單
GET oms/order/queryOrderById?id=value1¶m2=value2
//根據(jù)訂單id List獲取訂單
POST oms/order/queryOrderByIdList
//根據(jù)條件查詢訂單,帶分頁參數(shù)
POST oms/order/queryOrderByCondition
//更新訂單收款狀態(tài)
POST oms/order/updateOrderCollectionStatus
//批量更新訂單收款狀態(tài)
POST oms/order/updateOrderCollectionStatusInBatch
//批量更新訂單收款狀態(tài)
POST oms/order/updateOrderCollectionStatusInBatch
//批量刪除訂單,帶操作來源
POST oms/order/deleteOrderInBatch