本節(jié)目標(biāo)
建立一個(gè) lesson2 項(xiàng)目鲜侥,在其中編寫代碼褂始。
當(dāng)在瀏覽器中訪問http://localhost:3000/?q=alsotang時(shí),輸出alsotang的 md5 值剃毒,即bdd5e57b5c0040f9dc23d430846e68a3病袄。
知識(shí)點(diǎn)
學(xué)習(xí) req.query 的用法
學(xué)習(xí)建立 package.json 來管理 Node.js 項(xiàng)目搂赋。
課程內(nèi)容
本課程的每個(gè) lesson 里面的示例代碼都會(huì)帶上一份 package.json赘阀,大家可以去看看它的大概樣子。
$ mkdir lesson2 && cd lesson2
$ npm init
$ npm install express utility --save
這時(shí)查看node_modules目錄脑奠,會(huì)發(fā)現(xiàn)有兩個(gè)文件夾基公,分別是 express 和 utility
我們開始寫應(yīng)用層的代碼,建立一個(gè)app.js文件宋欺,復(fù)制以下代碼進(jìn)去:
//引入依賴
var express=require('express');
var utility=require('utility');
//建立 express 實(shí)例
varapp=express();app.get('/',function(req,res) {
//從 req.query 中取出我們的 q 參數(shù)轰豆。//如果是 post 傳來的 body 數(shù)據(jù)胰伍,則是在 req.body 里面,不過 express 默認(rèn)不處理 body 中的信息酸休,需要引入 https://github.com/expressjs/body-parser 這個(gè)中間件才會(huì)處理骂租,這個(gè)后面會(huì)講到。//如果分不清什么是 query斑司,什么是 body 的話渗饮,那就需要補(bǔ)一下 http 的知識(shí)了varq=req.query.q;//調(diào)用 utility.md5 方法,得到 md5 之后的值//之所以使用 utility 這個(gè)庫(kù)來生成 md5 值宿刮,其實(shí)只是習(xí)慣問題。每個(gè)人都有自己習(xí)慣的技術(shù)堆棧,//我剛?cè)肼毎⒗锏臅r(shí)候跟著蘇千和樸靈混穆役,所以也混到了不少他們的技術(shù)堆棧食绿,僅此而已。//utility 的 github 地址:https://github.com/node-modules/utility//里面定義了很多常用且比較雜的輔助方法磕潮,可以去看看
varmd5Value=utility.md5(q);res.send(md5Value);});
app.listen(3000,function(req,res) {console.log('app is running at port 3000');});
OK翠胰,運(yùn)行我們的程序
$ node app.js
訪問http://localhost:3000/?q=alsotang,完成自脯。
題外話
如果直接訪問http://localhost:3000/會(huì)拋錯(cuò)
可以看到亡容,這個(gè)錯(cuò)誤是從crypto.js中拋出的。
這是因?yàn)樵┙瘢?dāng)我們不傳入q參數(shù)時(shí)闺兢,req.query.q取到的值是undefined,utility.md5直接使用了這個(gè)空值戏罢,導(dǎo)致下層的crypto拋錯(cuò)屋谭。