创建Express
const express = require('express')
const app = express();
app.get('/', function(req, res){
res.send('hello');
});
app.listen(80);
之后是处理请求体
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(express.static(__dirname + '/public'));
app.use的第一项省略了资源路径,代表body parser适用所有的请求资源路径。body parser用于解析类json格式的请求体。
urlencoded用于处理string类型的body。
express.static代表静态文件目录。
问题来了,将所有的请求写在一个文件中显然不合理,也不符合模块化开发的需求。这时我们需要将一部分功能抽取出来形成一个模块。
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/list', function(req, res) {
res.send('respond with a resource');
});
module.exports = router;
router有get, post, all方法可以处理以各种方式提交的请求。
之后回到app.js,填写以下代码:
var usersRouter = require('./routes/users');
app.use('/users', usersRouter);
此时可以访问/user路径下的/list路径。
Request对象
function(req, res)中的req就是请求对象。它有几个方法,下面逐个做出说明:
req.method: 请求是以什么方式提交的。
req.baseUrl: 获取前面基础的资源路径。
req.path: 获取当前请求的资源路径。
req.headers: 将请求的所有头信息转为json。
req.query: 对URL中的查询参数进行转换后得到的json对象。
req.body: 如果当前请求是以post提交,req.body可以将请求体中的参数转为json。
使用Express制作Rest风格的API
Rest风格类似于以下这种情况。
/user/101
router.get('/:id', function (req, res) {
console.log('id: ', req.params.id);
res.send('Ok');
});
首先我们要取出其中的id。
Response对象
用于向浏览器输出响应结果。
router.get('/fb', function(req, res){
res.status(403).send('forbidden!');
});
router.get('/tt', function(req, res){
res.contentType('application/javascript');
res.sendFile('/ok.js', {root: __dirname + '/../public'});
});
router.get('/mm', function(req, res){
res.json({a: 1, b: [true, 'ok']});
});







网友评论