zoukankan      html  css  js  c++  java
  • node-express

    安装

    $ npm install express --save
    
    $ npm install body-parser --save //node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据
    $ npm install cookie-parser --save //通过req.cookies可以取到传过来的cookie,并把它们转成对象。
    $ npm install multer --save //node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。
    //express_demo.js 文件
    var express = require('express');
    var app = express();
     
    app.get('/', function (req, res) {
      //Request 对象 - 对象表示 HTTP 请求,Response 对象 - 表示 HTTP 响应 res.send(
    'Hello World'); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("应用实例,访问地址为 http://%s:%s", host, port) }) $ node express_demo.js
    req.app:当callback为外部文件时,用req.app访问express的实例
    req.baseUrl:获取路由当前安装的URL路径
    req.body / req.cookies:获得「请求主体」/ Cookies
    req.fresh / req.stale:判断请求是否还「新鲜」
    req.hostname / req.ip:获取主机名和IP地址
    req.originalUrl:获取原始请求URL
    req.params:获取路由的parameters
    req.path:获取请求路径
    req.protocol:获取协议类型
    req.query:获取URL的查询参数串
    req.route:获取当前匹配的路由
    req.subdomains:获取子域名
    req.accepts():检查可接受的请求的文档类型
    req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages:返回指定字符集的第一个可接受字符编码
    req.get():获取指定的HTTP请求头
    req.is():判断请求头Content-Type的MIME类型
    req的常见属性
    res.app:同req.app一样
    res.append():追加指定HTTP头
    res.set()在res.append()后将重置之前设置的头
    res.cookie(name,value [,option]):设置Cookie
    opition: domain / expires / httpOnly / maxAge / path / secure / signed
    res.clearCookie():清除Cookie
    res.download():传送指定路径的文件
    res.get():返回指定的HTTP头
    res.json():传送JSON响应
    res.jsonp():传送JSONP响应
    res.location():只设置响应的Location HTTP头,不设置状态码或者close response
    res.redirect():设置响应的Location HTTP头,并且设置状态码302
    res.send():传送HTTP响应
    res.sendFile(path [,options] [,fn]):传送指定路径的文件 -会自动根据文件extension设定Content-Type
    res.set():设置HTTP头,传入object可以一次设置多个头
    res.status():设置HTTP状态码
    res.type():设置Content-Type的MIME类型
    res的常见属性

    路由

    var express = require('express');
    var app = express();
     
    //  主页输出 "Hello World"
    app.get('/', function (req, res) {
       console.log("主页 GET 请求");
       res.send('Hello GET');
    })
     
    //  POST 请求
    app.post('/', function (req, res) {
       console.log("主页 POST 请求");
       res.send('Hello POST');
    })
     
    //  /del_user 页面响应
    app.delete('/del_user', function (req, res) {
       console.log("/del_user 响应 DELETE 请求");
       res.send('删除页面');
    })
     
    //  /list_user 页面 GET 请求
    app.get('/list_user', function (req, res) {
       console.log("/list_user GET 请求");
       res.send('用户列表页面');
    })
     
    // 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求
    app.get('/ab*cd', function(req, res) {   
       console.log("/ab*cd GET 请求");
       res.send('正则匹配');
    })
     

      // 返回html页面
      app.get('/index.htm', function(req, res) {
         res.sendFile(__dirname + "/" + "index.htm");
      })

    var server = app.listen(8081, function () {
     
      var host = server.address().address
      var port = server.address().port
     
      console.log("应用实例,访问地址为 http://%s:%s", host, port)
     
    })
    
    $ node express_demo2.js 
    http://127.0.0.1:8081/list_user

    静态文件

    Express 提供了内置的中间件 express.static 来设置静态文件如:图片, CSS, JavaScript 等。

    app.use(express.static('文件目录'));
    var express = require('express');
    var app = express();
     
    app.use(express.static('public'));
     
    app.get('/', function (req, res) {
       res.send('Hello World');
    })
     
    var server = app.listen(8081, function () {
     
      var host = server.address().address
      var port = server.address().port
     
      console.log("应用实例,访问地址为 http://%s:%s", host, port)
     
    })
    
    $ node express_demo3.js 
    在浏览器中访问 http://127.0.0.1:8081/images/logo.png

    静态文件

    Express 提供了内置的中间件 express.static 来设置静态文件如:图片, CSS, JavaScript 等。

    app.use(express.static('public'));

    public目录下的文件都可以通过路径直接访问:http://127.0.0.1:8081/images/logo.gif

    post

    <form action="http://127.0.0.1:8081/process_post" method="POST">..</form>
    
    server.js
    
    var bodyParser = require('body-parser');
    // 创建 application/x-www-form-urlencoded 编码解析
    var urlencodedParser = bodyParser.urlencoded({
      extended: false
    })
    
    //post请求加urlencodedParser
    app.post('/process_post', urlencodedParser, function(req, res) {
      // 输出 JSON 格式
      response = {
        first_name: req.body.first_name,
        last_name: req.body.last_name
      };
      console.log(response);
      res.end(JSON.stringify(response));
    })

    get

    <form action="http://127.0.0.1:8081/process_get" method="GET">..</form>
    
    server.js
    
    app.get('/process_get',  function(req, res) {
      // 输出 JSON 格式
      response = {
        first_name: req.query.first_name,
        last_name: req.query.last_name
      };
      console.log(response);
      res.end(JSON.stringify(response));
    })

    文件上传

    <form action="/file_upload" method="POST"  enctype="multipart/form-data">...</form>
    
    server.js
    var bodyParser = require('body-parser');
    var fs = require("fs");var multer = require('multer'); app.use(bodyParser.urlencoded({ extended: false })); app.use(multer({ dest: '/tmp/'}).array('image')); app.post('/file_upload', function (req, res) { console.log(req.files[0]); // 上传的文件信息 var des_file = __dirname + "/" + req.files[0].originalname;//目标文件,目录不能设置为静态目录 fs.readFile( req.files[0].path, function (err, data) { fs.writeFile(des_file, data, function (err) { if( err ){ console.log( err ); }else{ response = { message:'File uploaded successfully', filename:req.files[0].originalname }; } console.log( response ); res.end( JSON.stringify( response ) ); }); }); })

    Cookie 管理

    // express_cookie.js 文件
    var express      = require('express')
    var cookieParser = require('cookie-parser')
    
    var app = express()
    app.use(cookieParser())
    
    app.get('/', function(req, res) {
      console.log("Cookies: ", req.cookies)
    })
    
    app.listen(8081)
  • 相关阅读:
    【转】win8.1下安装ubuntu
    Codeforces 1025G Company Acquisitions (概率期望)
    Codeforces 997D Cycles in Product (点分治、DP计数)
    Codeforces 997E Good Subsegments (线段树)
    Codeforces 1188E Problem from Red Panda (计数)
    Codeforces 1284E New Year and Castle Building (计算几何)
    Codeforces 1322D Reality Show (DP)
    AtCoder AGC043C Giant Graph (图论、SG函数、FWT)
    Codeforces 1305F Kuroni and the Punishment (随机化)
    AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)
  • 原文地址:https://www.cnblogs.com/avidya/p/7483600.html
Copyright © 2011-2022 走看看