REST表示代表性狀態(tài)傳輸。REST是一種基于Web標(biāo)準(zhǔn)的架構(gòu),并使用HTTP協(xié)議。 它都是圍繞著資源,其中每一個(gè)組件是資源和一個(gè)資源是由一個(gè)共同的接口使用HTTP的標(biāo)準(zhǔn)方法獲得。REST最初是由Roy Fielding在2000年推出。
一個(gè)REST服務(wù)器只是提供的資源和REST客戶端訪問和使用HTTP協(xié)議修改的資源。這里每個(gè)資源由URI標(biāo)識(shí)的/全局標(biāo)識(shí)。其余部分使用各個(gè)表示形式表示相同的文字,JSON和XML資源;但JSON是最流行的一種。
以下四個(gè)HTTP方法通常用在基于REST架構(gòu)。
GET - 這是用來提供對(duì)資源的只讀訪問。
PUT - 這被用來創(chuàng)建新的資源。
DELETE - 這是用來刪除資源。
POST - 這被用于更新現(xiàn)有資源或者創(chuàng)建新的資源。
Web服務(wù)是用于交換應(yīng)用程序或系統(tǒng)之間的數(shù)據(jù)開放的協(xié)議和標(biāo)準(zhǔn)的集合。寫在各種編程語言和運(yùn)行在不同平臺(tái)上的軟件應(yīng)用程序可以使用Web服務(wù)來以類似于進(jìn)程間通信在單臺(tái)計(jì)算機(jī)上的方式通過計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行交換數(shù)據(jù),如因特網(wǎng)。 這種互操作性(如Java和Python,或Windows和Linux應(yīng)用程序之間的通信)是由于使用開放標(biāo)準(zhǔn)。
基于REST架構(gòu)的Web服務(wù)稱為RESTful web服務(wù)。這些Web服務(wù)使用HTTP方法來實(shí)現(xiàn)REST架構(gòu)的概念。RESTful Web服務(wù)通常定義的URI,統(tǒng)一資源標(biāo)識(shí)符一項(xiàng)服務(wù),它提供資源表示,如JSON,并設(shè)置HTTP方法。
考慮到我們擁有具有以下用戶的用戶的基于JSON數(shù)據(jù)庫中的文件 users.json:
{ "user1" : { "name" : "mahesh", "password" : "password1", "profession" : "teacher", "id": 1 }, "user2" : { "name" : "suresh", "password" : "password2", "profession" : "librarian", "id": 2 }, "user3" : { "name" : "ramesh", "password" : "password3", "profession" : "clerk", "id": 3 } }
基于這些信息,我們將提供以下RESTful 的API。
| S. N. | URI | HTTP 方法 | POST 主體 | 結(jié)果 |
|---|---|---|---|---|
| 1 | listUsers | GET | empty | 顯示所有用戶的列表 |
| 2 | addUser | POST | JSON String | 添加新用戶的詳細(xì)信息 |
| 3 | deleteUser | DELETE | JSON String | 刪除現(xiàn)有用戶 |
| 4 | :id | GET | empty | 查看用戶的詳細(xì) |
保持最全的例子部分的硬編碼假設(shè)的形式,你已經(jīng)知道如何通過使用Ajax或簡單的表單數(shù)據(jù),以及如何使用 express Request對(duì)象來處理前端的值。
讓我們用下面的代碼在server.js文件中,實(shí)現(xiàn)我們的第一個(gè)基于RESTful API 的 listUsers:
var express = require('express'); var app = express(); var fs = require("fs"); app.get('/listUsers', function (req, res) { fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { console.log( data ); res.end( data ); }); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Example app listening at http://%s:%s", host, port) })
現(xiàn)在嘗試使用定義的API,訪問 http://127.0.0.1:8081/listUsers 在本地機(jī)器上,這將產(chǎn)生以下結(jié)果:
可以更改指定的IP地址,當(dāng)您將投入生產(chǎn)環(huán)境的解決方案。
{ "user1" : { "name" : "mahesh", "password" : "password1", "profession" : "teacher", "id": 1 }, "user2" : { "name" : "suresh", "password" : "password2", "profession" : "librarian", "id": 2 }, "user3" : { "name"上一篇:Node.js快速入門下一篇:Node.js Express框架