部落格

curl 模擬傳送檔案

2014-05-09 23:45

curl -X GET https://127.0.0.1/test3 -T "C:\TestOnly.csv"

node.js 收發額外的自定義 http header

2014-05-01 21:35
參考網址 : 
 
 
如何使用 node.js 收發自定義的 http header 範例 : 
router.post('/1/:cmd', function(req, res) {
    var sCmd = req.params.cmd; //  取用路徑來設定的參數。
    if ( sCmd.toUpperCase() == 'JSON_POST' ) {
        var sUserID = req.body.user;
        var sHeader = req.headers['just-test'];  //  <==  讀取自定義 header
        res.setHeader("just-test-rep", sHeader);  //  <==  送出自定義 header
        res.type('text/plain');
        res.send('Input : ' + sCmd + ' [json post], Ver : 1,' + 
            'User : ' + sUserID + ' Custom Header : ' + sHeader );
        //res.send('post got it!');
    }
    else {
        res.send('Command : ' + req.params.cmd + ', Ver:1');
    }
});
 
 
//  curl  如何模擬送出自定義的 header 給 Server 
範例 : 
    curl -v -H "Accept: application/json" -H "just-test: AABBCC" -H "Content-type: application/json" -X POST -d "{\"user\":\"key\"}" https://127.0.0.1/1/json_post
 
簡單來說他就是一組 Key 跟 Value 對映的資料而已,只要 Client 跟 Server 雙方都能溝通好就完全沒問題了。

node.js 測試輸入 json 格式資料的方式

2014-04-29 18:04

這邊使用 curl 這個工具

取得網址 : https://curl.haxx.se/download.html  請找尋適合自己的版本。

[GET]

指令為 => curl -i -H "Accept: application/json" 127.0.0.1/1/json_test{"user":"what ever"}

 

[POST]

指令為 => curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d "{\"user\":\"key\"}"  https://127.0.0.1/1/json_post

 

兩者不能通用,如果弄錯會得到 Error : Invalid JSON 的訊息....

如果 Server 用的是 router.get 或著 app.get 那麼就會接收 GET 的訊息

如果 Server 用的是 router.post 或著 app.post 那麼就會接收 POST 的訊息

基本上來說用 POST 會比較好,因為資料內容不會輕易被洩漏出去,可以傳輸的內容也比較多。

node.js 讀取外部參數的方式

2014-04-29 15:26
 
https://127.0.0.1/Version1/login?user="GOD"&pass="hohoho"
 
/* GET Version . */
router.get('/Version1/:cmd', function(req, res) {
    var sCmd = req.params.cmd; //  取用路徑來設定的參數。
    var sUser = req.query.user;  //  取?後面帶的參數,使用 = 前面的當作變數。
    var sPass = req.query.pass;
    res.send('Input : "' + sCmd + ', Version1, User : ' + sUser + ', Pass : ' + sPass );
});
 
參考網址 : 

讓 node.js 跟 MongoDB 作連接

2014-04-26 22:14

1.找到並打開指定專案的 app.js

    例如 => C:\web_projects\nodetest1\app.js

2.增加新的 require

    var express = require('express');
    var path = require('path');
    var favicon = require('static-favicon');
    var logger = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');
 
    // New Code (代表載入 mongodb 跟 monk 然後指定使用 monk 去連接 localhost:27017/nodetest1 這個位置的 mongodb)
    var mongo = require('mongodb');
    var monk = require('monk');
    var db = monk('localhost:27017/nodetest1');
 
3.在 app.js 檔案中往下找到下面兩行
    app.use('/', routes);
    app.use('/users', users);
    然後在它們"上面"加入下面幾行
    // Make our db accessible to our router
    app.use(function(req,res,next){
        req.db = db;
        next();
    });
    ?當你的Server收到 request 之後它會把 mongodb 指定給每個 request使用?
 
改完以後 app.js 會跟下面差不多
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
 
// New Code
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');
 
var routes = require('./routes/index');
var users = require('./routes/users');
 
var app = express();
 
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
 
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
 
// Make our db accessible to our router
app.use(function(req,res,next){
    req.db = db;
    next();
});
 
app.use('/', routes);
app.use('/users', users);
 
/// catch 404 and forwarding to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});
 
/// error handlers
 
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    });
}
 
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});
 
module.exports = app;

 

4.修改專案的 index.js

    例如 => C:\web_projects\nodetest1\routes\index.js

    在檔案中加入下面這一段

/* GET Userlist page. */
router.get('/userlist', function(req, res) {
    var db = req.db;
    var collection = db.get('usercollection');
    collection.find({},{},function(e,docs){
        res.render('userlist', {
            "userlist" : docs
        });
    });
});

 

5.處理 view 的顯示部分

    步驟1.找到指定的 view

    例如 => C:\web_projects\nodetest1\views\index.jade 

    步驟2.將 index.jade 打開後直接另存新檔為 userlist.jade

    步驟3.打開 userlist.jade併將內容改為下面這段

extends layout
 
block content
    h1.
        User List
    ul
        each user, i in userlist
            li
                a(href="mailto:#{user.email}")= user.username
 
6.執行專案的 Server
    指令 : web_projects\nodetest1>npm start
 
7.打開網頁看結果
    https://localhost:3000/userlist

MONGODB 安裝

2014-04-26 21:52

1.下載 MongoDB

    下載官方網址 => https://www.mongodb.org/downloads  (如果是Windows安裝,請確認你的Windows版本併安裝搭配的版本)

2.建立資料庫儲存目錄

    例如 : C:\mongodb\data  預設會在 C:\data\db\

2.執行 MongoDB (Server)

    mongod.exe --dbpath C:\mongodb\data

3.測試連線

    步驟1 : http:/localhost:27017/ 應該會出現嘗試連接 MongoDB 27017 Port的訊息。

    步驟2 : c:\mongodb>mongo.exe 進行實際連線,如果成功應該會出現下面的類似訊息。

        MongoDB shell version: 2.4.5

        connecting to: test
 
4.切換所在資料庫
    指令 : use test1  (切換到 test1 這個資料庫)
 
5.新增資料
    指令1. : db.usercollection.insert({ "username" : "testuser1", "email" : "testuser1@testdomain.com" })
    回應 : WriteResult({ "nInserted" : 1 })   // 理論上會看起來像這樣。
    會在資料庫中增加一筆下面的紀錄。
{
    "_id" : ObjectId("5202b481d2184d390cbf6eca"),
    "username" : "testuser1",
    "email" : "testuser1@testdomain.com"
}
 
    指令2. : 
newstuff = [{ "username" : "testuser2", "email" : "testuser2@testdomain.com" }, { "username" : "testuser3", "email" : "testuser3@testdomain.com" }]
db.usercollection.insert(newstuff);
    回應 : 有點多懶得打了。
    會批次性增加下面幾筆記錄。
{
        "_id" : ObjectId("5202b481d2184d390cbf6eca"),
        "username" : "testuser1",
        "email" : "testuser1@testdomain.com"
}
{
        "_id" : ObjectId("5202b49ad2184d390cbf6ecb"),
        "username" : "testuser2",
        "email" : "testuser2@testdomain.com"
}
{
        "_id" : ObjectId("5202b49ad2184d390cbf6ecc"),
        "username" : "testuser3",
        "email" : "testuser3@testdomain.com"
}
 

 

node.js 學習筆記

2014-04-26 18:07

本篇寫的是 node.js 的安裝與基本範例。

參考網站 :

     https://cwbuecheler.com/web/tutorials/2013/node-express-mongo/

安裝 :

1.下載安裝檔案。

    https://nodejs.org/download/ 在這邊找到符合你需要的版本進行安裝。

2.建一個資料夾給你的專案當作"根目錄"使用。

    例如 : C:\web_projects

3.例用強大的 npm安裝express套件,基本上以後其他原件都靠這玩意就能順利安裝了。

    指令 : C:\web_projects>npm install -g express

             C:\web_projects>npm install -g express-generator

    npm 的 install 指令關網解說 => https://www.npmjs.org/doc/cli/npm-install.html  

    中文版的 npm 常用指令解說 => https://dreamerslab.com/blog/tw/npm-basic-commands/

    套件的說明網址 => https://www.npmjs.org/

4.建立專案,要注意的是你在哪個目錄下這個指令,他就會在那個目錄下產生專案的目錄。

    指令 : C:\web_projects>express test1

    執行這行命令後他會自動下載所有專案需要的套件到 node_modules 這個目錄下,

    以這邊來說就會是C:\web_projects\test1\node_modules\

 

5.建立相依性(EDIT DEPENDENCIES)

    找到 C:\web_projects\test1\ 下的 package.json 檔案

    看起來會像下面這樣

{
    "name": "application-name",
    "version": "0.0.1",
    "private": true,
    "scripts": {
        "start": "node ./bin/www"
    },
    "dependencies": {
        "express": "~4.0.0",
        "static-favicon": "~1.0.0",
        "morgan": "~1.0.0",
        "cookie-parser": "~1.0.1",
        "body-parser": "~1.0.0",
        "debug": "~0.7.4",
        "jade": "~1.3.0"
    }
}
    在 "dependencies" 的區塊內增加 mongodb 跟 monk 的部分,結果會像下面這樣。
 
"dependencies": {
    "express": "~4.0.0",
    "static-favicon": "~1.0.0",
    "morgan": "~1.0.0",
    "cookie-parser": "~1.0.1",
    "body-parser": "~1.0.0",
    "debug": "~0.7.4",
    "jade": "~1.3.0",
    "mongodb": "*",
    "monk": "*"
}

6.安裝相依性套件(INSTALL DEPENDENCIES)

    指令 : C:\web_projects\test1>npm install        (一定要先接換到 test1 目錄下,這樣他才會知道要依照哪個 package.json 檔案來安裝套件)

7.啟動網站

    指令 : C:\web_projects\test1>npm start        (一定要先接換到 test1 目錄下)

    結果應該會像下面這樣

    > application-name@0.0.1 start C:\web_projects\test1\
    > node ./bin/www
 
8. 測試是否成功
    直接登入 https://localhost:3000 網址就會知道了,結果應該要像下面這樣喔。
 
 
 

部落格

2014-04-26 11:59

我們的新部落格今天開始啟用了!請持續關注,我們會再繼續通知您最新消息。您可以透過RSS feed閱讀此部落閣的新公告。

標籤