(原創(chuàng))一個利用express進行快速開發(fā)實例

在上一篇“一個Restify+Mongoose+Redis的nodejs開發(fā)案例”中我使用了node的restify框架,此次機緣巧合下上手了express框架,而且是帶著需求的實例開發(fā)糯耍。

以前早有耳聞express的大名,也知道有很多達人都是用它來搭建自己的博客涂臣,但出于“慫”,沒敢上手,這次接觸后,發(fā)現(xiàn)express還真express上手符欠。

0. 小吹一下Express應用生成器

首先同樣是通過“npm install express”來安裝
然后按照中文官網(wǎng)上的教程Express 應用生成器就生成了一個完整的項目嫡霞,真的是超級express瓶埋,項目結構官網(wǎng)上都有截圖。
應用啟動后:

/.png
/users.png

前者返回的是一個頁面诊沪,后者返回的是數(shù)據(jù)养筒,區(qū)別在于頁面用render、數(shù)據(jù)用send端姚,這個同其他框架(django/flask/resitfy)是一樣的晕粪。

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

至于為何上面這段代碼就將views/index.jade給返回了,沒有研究過渐裸,就不瞎說了巫湘,專注實現(xiàn)后端接口就好。

1. 需求

現(xiàn)在微信當然應用很廣泛昏鹃,假設有一個在公眾號上擊劍手報名參加賽事活動的需求尚氛,現(xiàn)在快速出一個demo,需求過濾后的摘要如下:

  • 主辦方可以編輯發(fā)布賽事活動(會有一系列的字段)
  • 有一個活動展示頁面
    展示所有已發(fā)布的賽事活動的列表
    點擊一下還可以看活動詳情
    在活動詳情中還可以看到所有已報名的選手列表
    再點擊當然要看選手的信息
  • 有一個選手頁面(我的中心)
    如果未注冊洞渤,當然是要注冊阅嘶、補充信息
    已注冊則展示個人已報名活動的列表
  • 選手報名參加活動
    此處需要對接微信支付(demo不處理)

2.接口實現(xiàn)

如前所說,專注后端接口實現(xiàn)载迄,不負責頁面處理讯柔。
首先根據(jù)上述摘要進行建模,有match(賽事)护昧、fencer(擊劍手)魂迄、enroll(報名)三個model,具體字段這里就不說了惋耙,可以查看代碼中的schemas.js捣炬,哦對慈格,數(shù)據(jù)庫是MongoDB。
所有接口對于數(shù)據(jù)庫的操作不外乎增刪改查四個字遥金,這里也不例外浴捆,將需求中的行為轉化為對數(shù)據(jù)的操作:

  • match
    • 創(chuàng)建(/api/match/new): 活動的編輯發(fā)布
    • 遍歷查詢(/api/match/list):查詢所有上線的活動
    • 詳情查詢(/api/match/detail):詳情中需要展示報名信息,所以需要內嵌enroll的遍歷查找
    • 刪除:有上線就會有下線稿械,雖然需求沒有选泻,但需要預先考慮到,以便設計字段進行軟刪除美莫,而不是硬刪除页眯。
  • fencer的創(chuàng)建、詳情查詢(內嵌enroll的遍歷查詢)
    • 創(chuàng)建(/api/fencer/regist):選手的注冊
    • 詳情查詢(/api/fencer/info): 選手信息的展示厢呵,包含已報名的活動(只需要查詢enroll即可)
  • enroll的創(chuàng)建窝撵、詳情查詢
    • 創(chuàng)建(/api/enroll/join): 選手報名參加活動,為了支持前面二者的關聯(lián)查詢和展示襟铭,需要記錄相應的id和名稱
    • 詳情查詢(/api/enroll/detail): 報名記錄的詳情

3.測試/效果展示

同樣是使用postman來進行測試
關于POST請求的數(shù)據(jù)解析碌奉,express的默認設置如下:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

第一行的設置是支持“Content-Type:application/json”
第二行的設置是不支持“Content-Type:application/x-www-form-urlencoded”,想支持的話需要將false修改為true
之前調試restify的post接口時寒砖,并沒有特別注意格式赐劣,因為req.body都有數(shù)據(jù),這次發(fā)現(xiàn)express需要postman中的Body和Headers統(tǒng)一設置才能生效:

  • Headers選擇“Content-Type:application/x-www-form-urlencoded”哩都,則Body也需要選擇“x-www-form-urlencoded”
  • Headers選擇“Content-Type:application/json”的話魁兼,則Body需要選擇"raw",并嚴格按照JSON格式要求輸入數(shù)據(jù)漠嵌,否則會報錯

下面展示部分接口訪問的截圖
1.創(chuàng)建活動


/api/match/new

2.活動列表

/api/match/list

3.沒有報名記錄的活動詳情

/api/match/detail_1

4.有報名記錄的活動詳情

/api/match/detail_2

5.選手報名后的個人信息

/api/fencer/info

6.報名記錄詳情

/api/enroll/detail

4.代碼repo

express_sample

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末咐汞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子儒鹿,更是在濱河造成了極大的恐慌化撕,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挺身,死亡現(xiàn)場離奇詭異侯谁,居然都是意外死亡,警方通過查閱死者的電腦和手機章钾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門墙贱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贱傀,你說我怎么就攤上這事惨撇。” “怎么了府寒?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵魁衙,是天一觀的道長报腔。 經(jīng)常有香客問我,道長剖淀,這世上最難降的妖魔是什么纯蛾? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮纵隔,結果婚禮上翻诉,老公的妹妹穿的比我還像新娘。我一直安慰自己捌刮,他們只是感情好碰煌,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绅作,像睡著了一般芦圾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俄认,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天个少,我揣著相機與錄音,去河邊找鬼梭依。 笑死稍算,一個胖子當著我的面吹牛典尾,可吹牛的內容都是我干的役拴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼钾埂,長吁一口氣:“原來是場噩夢啊……” “哼河闰!你這毒婦竟也來了?” 一聲冷哼從身側響起褥紫,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤姜性,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后髓考,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體部念,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年氨菇,在試婚紗的時候發(fā)現(xiàn)自己被綠了儡炼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡查蓉,死狀恐怖乌询,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情豌研,我是刑警寧澤妹田,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布唬党,位于F島的核電站,受9級特大地震影響鬼佣,放射性物質發(fā)生泄漏驶拱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一晶衷、第九天 我趴在偏房一處隱蔽的房頂上張望屯烦。 院中可真熱鬧,春花似錦房铭、人聲如沸驻龟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翁狐。三九已至,卻和暖如春凌蔬,著一層夾襖步出監(jiān)牢的瞬間露懒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工砂心, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留懈词,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓辩诞,卻偏偏與公主長得像坎弯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子译暂,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,515評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理抠忘,服務發(fā)現(xiàn),斷路器外永,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • Address:https://www.zybuluo.com/XiangZhou/note/208532 Exp...
    天蠍蒗漫閱讀 11,283評論 2 55
  • 愛情是件奢侈品 愛情好色而拜金崎脉。青年人是愛情的寵兒,自古而今伯顶,一直倍受青睞囚灼。不能否認一個事實:貴族比平民更容...
    惠風和暢喲閱讀 606評論 0 3
  • 不知道從何時起,漸漸的喜歡上了黑夜祭衩,只有當那夜幕來臨以后灶体,所有的時間才都屬于了我。不開燈汪厨,看著自己被漆黑的夜...
    錦公子閱讀 144評論 1 1