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 |