• Express4 Route笔记


    可以参考Express官网关于路由一节:http://expressjs.com/guide/routing.html

    1:通过使用GET、POST方式定义主页路由,app.js:

    var express = require('express');
    var app = express();
    
    app.get('/', function(req,res){
        res.send('欢迎来到Express首页');
    });
    app.post('/', function(req,res){
        res.send('Welcome to Express Index.');
    });

    2:路由路径以及参数定义

    var express = require('express');
    var app = express();
    
    app.get('/users', function(req,res){
        res.send('获取用户列表');
    });
    app.get('/users/:id', function(req,res){
        res.send('user id:'+req.params.id);
    });

    浏览器中输入:http://127.0.0.1:3000/users/,http://127.0.0.1:3000/users/111

    3:正则路由,值匹配方式与正则表达式一致,例如:

    var express = require('express');
    var app = express();
    
    app.get('/ho?l', function(req,res){
        res.send('hl,hol');
    });
    app.get('/ho+l', function(req,res){
        res.send('hol,hool,hooool,and so on');
    });
    app.get('/ho*l', function(req,res){
        res.send('hol,holl,hoal,ho1000l,and so on');
    });
    app.get('/ho(ab)?l', function(req,res){
        res.send('hol,habl');
    });

    4:Route Handler:next()

    var express = require('express');
    var app = express();
    
    app.get('/a/b', function(req,res,next){
        console.log('response will be send by the next function...');
        next();
    },function(req,res){
        res.send('/a/b');
    });

    注意在next()所在的路由中,不能有输出,要在最后的处理函数中输出,否则后台会输出以下错误内容:

    Error: Can't set headers after they are sent.
        at ServerResponse.OutgoingMessage.setHeader (http.js:689:11)
        at ServerResponse.header (/home/y/my_note/nodejs/myapp/node_modules/express/lib/response.js:662:10)
        at ServerResponse.send (/home/y/my_note/nodejs/myapp/node_modules/express/lib/response.js:146:12)
        at fn (/home/y/my_note/nodejs/myapp/node_modules/express/lib/response.js:896:10)
        at View.exports.renderFile [as engine] (/home/y/my_note/nodejs/myapp/node_modules/jade/lib/jade.js:325:12)
        at View.render (/home/y/my_note/nodejs/myapp/node_modules/express/lib/view.js:76:8)
        at Function.app.render (/home/y/my_note/nodejs/myapp/node_modules/express/lib/application.js:527:10)
        at ServerResponse.res.render (/home/y/my_note/nodejs/myapp/node_modules/express/lib/response.js:900:7)
        at module.exports (/home/y/my_note/nodejs/myapp/app.js:90:9)
        at Layer.handle_error (/home/y/my_note/nodejs/myapp/node_modules/express/lib/router/layer.js:58:5)

    5:Response Methods

    MethodDescription
    res.download() Prompt a file to be downloaded.
    res.end() End the response process.
    res.json() Send a JSON response.
    res.jsonp() Send a JSON response with JSONP support.
    res.redirect() Redirect a request.
    res.render() Render a view template.
    res.send() Send a response of various types.
    res.sendFile Send a file as an octet stream.
    res.sendStatus() Set the response status code and send its string representation as the response body.

    6:app.route()

    app.route('/book')
        .get(function(req,res){
            res.send('get a book');
        })
        .post(function(req,res){
            res.send('add a book');
        })
        .put(function(req,res){
            res.send('update the book');
        });

    7:Express.Router

    app.js

    var routes = require('./routes/index');
    var users = require('./routes/users');

      // view engine setup
      app.set('views', path.join(__dirname, 'views'));
      app.set('view engine', 'jade');

    
    
    app.use('/', routes);
    app.use('/users', users);
    
    index.js
    var express = require('express');
    var router = express.Router();
    
    /* GET home page. */
    router.get('/', function(req, res) {
      res.render('index', { title: 'Express!' }); 
    });
    
    module.exports = router;
  • 相关阅读:
    Spring.Net的AOP的通知
    Spring.Net的IOC入门
    Unity依赖注入使用
    C#dynamic关键字(1)
    多线线程async与await关键字
    C#面试题
    MangoDB的C#Driver驱动简单例子
    安装vuecli和使用elememtUi
    再也不怕aop的原理了
    easyui实现多选框,并且获取值
  • 原文地址:https://www.cnblogs.com/yshyee/p/4282180.html
Copyright © 2020-2023  润新知