- 请求方式 get / post / put / delete____查 / 增 / 改 / 删
- 路由路径 必须 '/' 开头
// hotel.meituan.com/40302829/?ci=2018-12-21&2018-12-22
// 查询字符串 ?ci=2018-12-21&2018-12-22
// params 4032829
- 回调函数(句柄函数) (req 请求信息, res 响应信息)=>{}
req.query 获取 查询字符串 参数 GET 请求
req.params 获取 params 参数
req.headers 获取请求头的所有信息
req.body 获取请求体参数 POST 请求
(默认 express 框架是解析不了请求体数据的,需要引入其他中间件实现)
返回响应(有且只能设置一个方法,否则报错)
res.download('./haha.mp4') 返回响应,让 浏览器 自动下载指定文件
res.sendFile(__dirname + '/haha.js') 返回响应,让 浏览器 自动打开指定文件
res.end() 返回一个快速响应
res.json() 返回响应,将传入的 数据 转化为 JSON 字符串 返回
res.send() 根据传入数据的类型 来自动判断,添加响应的响应头处理,相对较慢
如: <h1></h1> 会自动加上 content-type text/html; charset=utf-8
{xxx: xxx} 自动转化为 JSON,并返回
res.redirect('https://www.baidu.com') 返回响应,将 请求资源 重定向到新的地址,默认响应状态码 302
res.get() 获取 响应头 的内容
res.set('content-type', 'text/html; charset=utf-8') 设置 响应头 的内容
res.status(500) 设置 响应状态码 的内容 res.status(500).end('test');
解析规则:
所有路由和中间件都在一个数组中,js 引擎会按照代码先后顺序添加路由和中间件
当请求发送到服务器时,服务器获取当前的请求信息(请求方式、请求路由路径)
遍历数组,找到第一个匹配(请求路由路径和请求方式必须完全一致)到的路由或者中间件,执行其回调函数
意味着: 声明多个同名路由时,始终解析第一个成功解析的路由
如果没找到,返回一个状态码为 404 的响应, Cannot GET / xxx 或者 Cannot POST / xxx
-
// 1. 导入 express 模块 const express = require('express'); // 2. 创建 app 应用对象 const app = express(); // 3. 写业务逻辑:处理请求,返回响应 // route 路由的组成: app.请求方式('/路由路径', 句柄函数); app.get('/login', (request, response)=>{ console.log(request.query); response.send('Login Page Response!'); }); app.post('/register', (request, response)=>{ console.log(request.query); response.send('Register Page Response!'); }); app.post('/shop/a', (request, response)=>{ console.log(request.query); response.send('Shop/a Page Response!'); }); app.post('/shop/b', (request, response)=>{ console.log(request.query); response.send('Shop/b Page Response!'); }); //hotel.meituan.com/40302829/?ci=2018-12-21&2018-12-22 // 查询字符串 ?ci=2018-12-21&2018-12-22 // params 4032829 // /:id 路由, 一类路由的集合处理 app.post('/hotel/:id', (request, response)=>{ console.log(request.params); // {id: '123456'} response.send('Shop/b Page Response!'); }); // 4. 监听端口号:一个端口号 有且只能运行 一个程序 app.listen(3000, err=>console.log(err?err:'服务器启动成功 : http://127.0.0.1:3000'));