創建站點目錄
首先,創建一個文件夾用來保存你的站點文件,使用 mkdir 就可以了
PS C:\> mkdir mysite
然后,進入到這個文件夾進行下一步的操作。
創建包說明
使用記事本或者你喜歡的任何純文本編輯器創建 package.json 文件,文件名是一個約定必須是這個名字。
創建本網站自身的說明,說明依賴的其它包。
{ "name": "express-api", "version": "0.0.1", "dependencies": { "express": "2.5.9", "ejs": "0.4.2" } }
安裝需要的包
然后,執行 npm install 安裝所依賴的包。npm 會自動尋找當前目錄下的 package.json 文件的。
安裝之后,目錄中多了一個文件夾 node_modules.
創建程序
使用任何你喜歡的純文本編輯器開始寫你的 node.js 代碼,如果你有 Visual Studio 當然更好了。
先讓我們的服務器運行起來。創建名為 server.js 的代碼文件,寫入下面的內容就可以創建一個 web 服務器了。
var express = require("express"); var app = express.createServer(); console.log("Web Server listening ......"); app.listen(3000);
在命令行執行下面的命令 node server ,啟動我們的站點。你會看到網站服務器已經在運行了。
PS C:\mysite> node server
Web Server listening ......
但是,訪問一下,你會發現無法找到網頁,當然了,我們現在一個網頁也沒有呀!
創建視圖
你可以注意到了,我們的站點依賴於一個名為 ejs 的模塊,這個模塊提供了視圖支持,我們可以使用類似於 ASP.NET MVC 中的視圖來創建頁面。
在站點的根目錄下創建一個名為 views 的文件夾,保存我們的視圖。
創建我們的歡迎頁面 index.ejs,注意擴展名,這是 ejs 的約定。
<h1>Data API</h1> <p>Welcome!</p>
把我們的代碼修改一下,當訪問 / 的時候,返回這個視圖。
var express = require("express");
var app = express.createServer();
app.set("view engine", "ejs");
app.set("views", __dirname + "/views");
app.set("view options", { layout: false });
app.get("/", function (request, response) {
response.render("index");
});
console.log("Web Server listening ......");
app.listen(3000);
增加的幾個 set 用來說明我們的視圖引擎要使用 ejs 引擎,我們的視圖文件保存在當前目錄下的 views 文件夾中,現在還沒有使用布局。
增加的 get 則說明當接收到一個 get 請求訪問 / 的時候,我們需要使用名為 index 的視圖來呈現返回結果。
現在訪問 http://127.0.0.1:3000 就會收到這樣的回應了。
創建數據
我們希望提供數據的 API ,數據保存在哪里呢?
我們先保存一個 json 文件中,這個文件包含用戶的信息,名為 data.json。
{ "1": { "name":"tom", "email":"tom@nodejs.org" }, "2": { "name":"red", "email":"red@nodejs.org" } }
然后,我們希望通過用戶的標識來獲取用戶的信息。
在我們的代碼中添加下面的一段。
app.get("/user/:id", function (request, response) { var id = request.params.id; console.log(id); response.json(data[id]); });
:id 表示這是一個參數,在處理函數中可以通過 request.params.id 來獲取到。
新增加的第一行用來加載我們的數據文件 data.json ,不要忘了前面的 ./ , 否則 node 會到 node_modules 中去找這個模塊的。
現在我們的代碼變成了這樣。
var data = require("./data"); var express = require("express"); var app = express.createServer(); app.set("view engine", "ejs"); app.set("views", __dirname + "/views"); app.set("view options", { layout: false }); app.get("/", function (request, response) { response.render("index"); }); app.get("/user/:id", function (request, response) { var id = request.params.id; console.log(id); response.json(data[id]); }); console.log("Web Server listening ......"); app.listen(3000);
現在,在地址欄中輸入 /user/1 ,你就會收到一個 json 的返回結果,其中是 1 號用戶的信息了。
數一數,你用了幾行就實現了一個簡單的 API 服務?
包括空行也只有 20 行而已。