REST:(Representational State Transfer)即表現層狀態轉換,定義了資源的通用訪問格式,是一種網絡應用程序的設計風格和開發方式。html
在概念中,須要理解如下幾個名稱:node
即服務器上獲取到的東西任何資源,一條用戶記錄,一個用戶的密碼,一張圖片等等都是。git
即資源格式,是 HTML、XML、JSON、純文本、圖片等等,能夠用各類各樣的格式來表述你獲取到的資源。github
即URL定位資源,用 HTTP 動詞(GET,POST,DELETE,DETC)描述操做。操做是動詞,資源是名詞。spring
即經過統一的接口對資源進行操做。express
REST 一般基於使用 HTTP
, URI
,和 XML
以及 HTML
這些現有的普遍流行的協議和標準,每一種 URI 表明一種資源。json
REST 一般使用 JSON
數據格式。api
REST 基本架構的四個方法:瀏覽器
GET - 用於獲取數據緩存
PUT - 用於更新或添加數據
DELETE - 用於刪除數據
POST - 用於添加數據
下面會經過一個場景介紹。
REST 定義了資源的通用訪問格式,接下來一個消費者爲實例,介紹 RESTful API 定義:
GET /api/user
複製代碼
GET /api/user/100
複製代碼
POST /api/user
複製代碼
PUT /api/user/100
複製代碼
DELETE /api/user/100
複製代碼
GET /api/user/100/bill
複製代碼
GET /api/user/100/bill?from=201910&to=201911
複製代碼
以上其中 RESTful 風格 API 幾乎包含常見業務狀況。
本案例使用 mock 數據來演示,以下:
{
"user1" : {
"name" : "leo",
"password" : "123456",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "pingan8787",
"password" : "654321",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "robin",
"password" : "888888",
"profession" : "clerk",
"id": 3
}
}
複製代碼
咱們將實現如下 RESTful API :
這一步咱們會建立 RESTful API 中的 user,使用 GET 來讀取用戶的信息列表:
// index.js
const express = require('express');
const app = express();
const fs = require("fs");
// 定義 讀取用戶的信息列表 的接口
app.get('/user', (req, res) => {
fs.readFile( __dirname + "/" + "users.json", 'utf8', (err, data) => {
console.log( data );
res.end( data );
});
})
const server = app.listen(8081, function () {
const {address, port} = server.address();
console.log("server run in: http://%s:%s", address, port);
})
複製代碼
這一步咱們會建立 RESTful API 中的 user,使用 POST 來添加用戶記錄:
// index.js
// 省略以前文件 只展現須要實現的接口
// mock 一條要新增的數據
const user = {
"user4" : {
"name" : "pingan",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
// 定義 添加用戶記錄 的接口
app.post('/user', (req, res) => {
// 讀取已存在的數據
fs.readFile( __dirname + "/" + "users.json", 'utf8', (err, data) => {
data = JSON.parse( data );
data["user4"] = user["user4"];
console.log( data );
res.end( JSON.stringify(data));
});
})
複製代碼
這一步咱們在 RESTful API 中的 URI 後面加上 :id,使用 GET 來獲取指定用戶詳情:
// index.js
// 省略以前文件 只展現須要實現的接口
// 定義 獲取指定用戶詳情 的接口
app.get('/:id', (req, res) => {
// 首先咱們讀取已存在的用戶
fs.readFile( __dirname + "/" + "users.json", 'utf8', (err, data) => {
data = JSON.parse( data );
const user = data["user" + req.params.id]
console.log( user );
res.end( JSON.stringify(user));
});
})
複製代碼
這一步咱們會建立 RESTful API 中的 user,使用 DELETE 來刪除指定用戶:
// index.js
// 省略以前文件 只展現須要實現的接口
// mock 一條要刪除的用戶id
const id = 2;
app.delete('/user', (req, res) => {
fs.readFile( __dirname + "/" + "users.json", 'utf8', (err, data) => {
data = JSON.parse( data );
delete data["user" + id];
console.log( data );
res.end( JSON.stringify(data));
});
})
複製代碼
本文首發在 pingan8787我的博客,如需轉載請聯繫本人。
Author | 王平安 |
---|---|
pingan8787@qq.com | |
博 客 | www.pingan8787.com |
微 信 | pingan8787 |
每日文章推薦 | github.com/pingan8787/… |
ES小冊 | js.pingan8787.com |