儘管平常在寫WEB專案時候都會把web api跟前端框架做再一起,但考慮到未來有可能前後端完全拆離,開發前端時還是用個Debug用的Web api來做測試,職權分離,單元測試也會好做點,也因為是前端要用的,所以才會決定用nodejs來實作。
NodeJS
- 優點:
- 上手難度低,用JavaScript撰寫
- 環境建置迅速,只需下達簡單指令即可
- 資源多,網上多半都有擴充套件支援
- 缺點:
- 弱型別不易參考
- call back地獄
- 不適宜大型專案
- node_modules太大一包
建置WebApi服務
初始化npm
1
2
3
4
5
6
7
8
9
10// 初始化npm
mkdir helloworld
cd helloworld
npm init --yes
// 參考來源
// express: RESTful封裝套件
// body-paser: 解析header裡的協定,expressjs 4.0 後被拆出,須獨立安裝
// dotenv: 環境變數設定用
npm i -s express body-paser dotenv專案架構
1
2
3
4
5// 架構設定同asp.net mvc架構
- controller
- controller/helloworldController.js
- app.js
- .env撰寫helloworld路由(helloworldController.js)
1
2
3
4
5
6
7'use strict';
module.exports = function(app) {
app.route('/helloworld').get((req, res) => {
res.send('Hello World');
});
}撰寫主程式(app.js)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26'use strict';
//// 利用dotenv載入config
require('dotenv').config();
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
//// 路由
var helloworldRouter = require('./controller/helloworldController');
//// port 預設3002
let port = process.env.PORT || 3002;
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
////
helloworldRouter(app);
app.listen(port, () => {
console.log('express listen on port:' + port);
})config設定檔(.env)
1
PORT=3001