1. hello world
const express = require('express');
const app = express();
app.get('/',(req,res)=>{
res.send('hello world');
});
const server = app.listen(3000, () => {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
2. 静态服务器
const express = require('express');
const app = express();
app.use(express.static('static'));
const server = app.listen(3000, () => {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
3. 路由
3.1 method
// GET method route
app.get('/', function (req, res) {
res.send('GET request to the homepage');
});
// POST method route
app.post('/', function (req, res) {
res.send('POST request to the homepage');
});
3.2 路径的特殊写法
app.get('/article/:id', function(req, res) {
res.render('article',{id, req.params.id});
});
另外支持正则,这应该能处理绝大部分需求。
3.3 回调函数的写法
类似中间件
var cb0 = function (req, res, next) {
console.log('CB0');
next();
}
var cb1 = function (req, res, next) {
console.log('CB1');
next();
}
var cb2 = function (req, res) {
res.send('Hello from C!');
}
app.get('/example/c', [cb0, cb1, cb2]);
3.4 app.route
可链式调用
app.route('/book')
.get(function(req, res) {
res.send('Get a random book');
})
.post(function(req, res) {
res.send('Add a book');
})
.put(function(req, res) {
res.send('Update the book');
});
3.5 express.Router
从Express 4.0开始,路由器功能成了一个单独的组件Express.Router。它好像小型的express应用程序一样,有自己的use、get、param和route方法。
4. 中间件
中间件(middleware)就是处理HTTP请求的函数。它最大的特点就是,一个中间件处理完,再传递给下一个中间件。App实例在运行过程中,会调用一系列的中间件。
每个中间件可以从App实例,接收三个参数,依次为request对象(代表HTTP请求)、response对象(代表HTTP回应),next回调函数(代表下一个中间件)。每个中间件都可以对HTTP请求(request对象)进行加工,并且决定是否调用next方法,将request对象再传给下一个中间件。
一个不进行任何操作、只传递request对象的中间件,就是下面这样。
function uselessMiddleware(req, res, next) {
next();
}
express的官方文档把中间件分为五种:应用级中间件、路由级中间件、错误处理中间件、内置中间件、第三方中间件
5. express处理get和post请求
5.1 get请求
// http://localhost:3000/users/333?name=michael
app.get('/users/:id',(req,res)=>{
console.log('query',req.query); // {name:michael}
console.log('params',req.params);// {id:3000}
res.send('query success');
});
5.2 post请求
const bodyParser = require('body-parser')
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
app.post('/todos/insert',(req,res)=>{
console.log('body', req.body);
res.send('post success');
});
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。