zoukankan      html  css  js  c++  java
  • 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'));

     

    --------小尾巴 ________一个人欣赏-最后一朵颜色的消逝-忠诚于我的是·一颗叫做野的心.决不受人奴役.怒火中生的那一刻·终将结束...
  • 相关阅读:
    证明最大公约数Stein算法(高精度算法)
    链表常用内容和易犯错误
    斐波那契数列——各种公式证明
    用矩阵和待定系数法求数列的分析(复杂度log(n))
    盒模型(外边距)
    盒子模型(内边距)
    盒子模型(边框)
    jupyterhub
    1分钟k线图能反映什么?(转)
    python的self
  • 原文地址:https://www.cnblogs.com/tianxiaxuange/p/10155792.html
Copyright © 2011-2022 走看看