在實習期間,因為公司需要,必須搭建一個Web API,上網查了一下之後發現Nodejs & express 搭配是個不錯的做法,於是買了本Nodejs的書翻了幾天,上網找了一些資料之後就開始著手了,這篇是自己在建置過程的筆記。

裡面有許多的內容是參考這篇:

Build a RESTful API Using Node and Express4

有興趣的人可以連結至原文觀看。

目標

  • 利用HTTP方法 GET POST PUT DELET 搭建基礎RESTful API。
  • 回傳json格式的資料。

關於RESTful API,這篇有更詳細的介紹:

Designing a RESTful Web API

開始

本文預設你已經裝好了Nodejs & express4。

一、 建立一個express專案

我是利用express generator來建立,如果尚未安裝,請先打開你的終端機,輸入npm install -g express-generator,等安裝好之後,就可以利用express yourapp這項指令來建立專案。

假設這個API專案的名稱為node-api,輸入以下指令:

$ express node-api

就會在該目錄下產生一資料夾為node-api。

二、安裝相依套件

進入目錄,安裝相關套件:

$ cd node-api
$ npm install

三、建立自己的API檔

在routes資料夾下建立apis.js,打開之後輸入以下內容:

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

route.get('/images', function(req, res) {
    res.json({ message: "第一個API!" });
});

module.exports = router;

之後打開app.js,在第10行與第26行分別加入以下內容(其實加在哪裡都沒差,只是require跟app.use分開放比較整齊):

app.js
var apis = require('./routes/apis'); // 加在require部分


app.use('/api', apis); // 加在app.use部分

打開terminal,輸入

$ npm start

server就跑起來囉,預設的port為 http://localhost:3000

四、測試API(利用Postman)

api寫好也跑起來之後,就可以來進行測試囉。Postman是一款簡單易用的工具,它可以幫你送出不同的HTTP方法到某個網址,也可以讓你輸入參數。

打開Postman,輸入http://localhost:3000/api/images,選get,就可以看到如下的畫面

恭喜你,完成了最基礎的api!

五、單筆資料的CRUD

接下來就是搭建針對單筆資料CRUD的RESTful api;與上一個做法不同的地方是,在網址部分傳入id當作參數(本文中不會實作資料庫的部分,僅僅是搭建一個架構,如果需要更進一步了解api與資料庫的搭配,可以參考開頭的那篇連結)。

api.js內輸入以下內容:

api.js
router.route('/images/:id') // 輸入id當作參數


.get(function(req, res) {
    res.json({
        id: req.params.id, // 以req.params.id 取得參數

        message: 'The get api for image: ' + req.params.id
    })
})

.post(function(req, res) {
    res.json({
        id: req.params.id,
        message: 'The post api for image: ' + req.params.id
    })
})

.put(function(req, res) {
    res.json({
        id: req.params.id,
        message: 'The put api for image: ' + req.params.id
    })
})

.delete(function(req, res) {
    res.json({
        id: req.params.id,
        message: 'The delete api for image: ' + req.params.id
    })
});

之後,同樣利用Postman,選擇不同的HTTP method來進行檢視。以下以post為例:

到此就完成了基本api的雛形,接下來就可以針對不同的method來進行CRUD的實作囉。