什么是 REST ?
REST即表述性状态传递(Representational State Transfer,简称REST),是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。
表述性状态转移(REST)是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML 以及HTML这些现有的广泛流行的协议和标准。REST 通常使用 JSON 数据格式。
以下为 REST 架构的四个基本方法:
-
GET
- 用于获取数据。 -
PUT
- 用于更新或添加数据。 -
DELETE
- 用于删除数据。 -
POST
- 用于添加数据。
什么是 RESTful ?
Web Service是一个独立于平台的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
基于 REST 架构的 Web Services 即是 RESTful。
由于轻量级以及通过 HTTP 直接传输数据的特性,Web 服务的 RESTful 方法已经成为最常见的替代方法。可以使用各种语言(如 Java 程序、Perl、Ruby、Python、PHP 和 Javascript[包括 Ajax])实现客户端。
RESTful Web Service 通常可以通过自动客户端或代表用户的应用程序访问。但是,这种服务的简便性让用户能够与之直接交互,使用它们的 Web 浏览器构建一个 GET URL 并读取返回的内容。
更多关于RESTful API 的理论学习:RESTful 架构详解。
创建 RESTful API

var express = require('express')
var fs = require('fs')
var app = express()
// 方法封装:读取文件中的JSON数据
var readUser = function(callback) {
fs.readFile(__dirname + '/data/users.json', 'utf8', function(err, data) {
callback && callback(JSON.parse(data))
})
}
// 查询所有用户
app.get('/listUsers', function(req, res) {
readUser(function(data) {
res.end(JSON.stringify(data))
})
})
// 添加用户
app.get('/addUser', function(req, res) {
readUser(function(data) {
var id = Date.now()
var newUser = {
id: id,
name: 'geek'+id,
age: 40
}
data['user'+id] = newUser
res.end(JSON.stringify(data))
})
})
// 获取指定用户信息
app.get('/getUser/:id', function(req, res) {
readUser(function(data) {
var user = data['user'+req.params.id]
res.end(JSON.stringify(user))
})
})
// 删除指定用户
app.get('/deleteUser/:id', function(req, res) {
readUser(function(data) {
delete data['user'+req.params.id]
res.end(JSON.stringify(data))
})
})
var server = app.listen('8989', '127.0.0.1', function() {
var host = server.address().address
var port = server.address().port
console.log('server is running on http://%s:%s', host, port)
})




Node.js完整教程 第05篇 结束!
网友评论