文章涉及到的API:req.params
,res.json()
,app.get()
,app.post()
,app.param()
。
API讲解
1. app.get()
、app.post()
配置客户端路由(请求地址)。
app.post('/get_json/:id', function (req, res) {
// 响应块代码
})
这里配置了一个POST请求的地址。将app.post()
改成app.get()
也是可以的,只是请求类型会变成get
。
2. req.params
一个对象,其包含了一系列的属性,这些属性和在路由中命名的参数名是一一对应的。例如,如果你有/user/:name
路由,name
属性可通过req.params.name
的方式获取到,这个对象默认值为{}。
3. res.json()
发送一个json
的响应。这个方法和将一个对象或者一个数组作为参数传递给res.send()
方法的效果相同。不过,你可以使用这个方法来转换其他的值到json
,例如null
,undefined
。(虽然这些都是技术上无效的JSON
)。
4. app.param()
这个API有两个参数,(name, callback)
,name
是被监听参数的字段名, callback
则是对监听结果的回调函数。callback
有四个参数,分别是 request
、response
、next
、name
,request
做请求处理,response
做响应处理,next
执行正确参数时的函数操作,name
是被监听参数的值。
app.param('id', function(req, res, next, id) {
if (id == 3) {
next() // 参数正确调用next函数
} else { // 监听参数不存在或者错误,给出错误响应
console.log('Erro !!!');
res.send('Erro !!!!');
}
})
示例代码
- 服务端代码
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
// 解析json格式的数据
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
// POST请求 返回JSON串数据
app.post('/get_json/:id', function (req, res) {
console.log("接收到 POST 请求");
var json = {
'message': '欢迎访问',
'data': { 'a': 1, 'b': 2, 'c': 4, 'd': 3, 'e': 5 }
}
res.json(json);
})
// 处理不同参数的请求
app.param('id', function(req, res, next, id) {
if (id == 3) {
next() // 执行正常操作,返回JSON数据
} else {
console.log('Erro !!!');
console.log(req.params);
res.send('Erro !!!!');
}
})
- 客户端请求
ajax({
url: '/get_json/1', // 传 3 的时候,后台才会返回JSON数据
type: 'POST',
data: data,
success: function(data){
// console.log( JSON.parse(data) );
console.log(data);
}
})