Node.js_express_route 路由

route 路由   (kiss my ass ヾ(゚∀゚ゞ)

  • 请求方式        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'));

 

posted @ 2018-12-21 15:02  耶梦加德  阅读(854)  评论(0编辑  收藏  举报