zoukankan      html  css  js  c++  java
  • express高效入门教程(2)

    2.请求和响应

    2.1.请求相关

    2.1.1.返回一个html页面

    //  注意path模块需要先引入
    app.get('/', function (req, res){
      res.sendFile(path.resolve('./views/index.html'))
    })
    

    2.1.2.接收前台get方式发送过来的数据

    // get方式发送过来的数据 使用req.query接收
    app.get('/getuser', function (req, res) {
      console.log(req.query.userid)
    })
    
    // 完整代码
    // 引入express
    var express = require('express')
    var path = require('path')
    var app = express()
    var userArr = [
      {"id": 1, "name": "xiaoqiang", "age": 18},
      {"id": 2, "name": "xiaoli", "age": 19},
      {"id": 3, "name": "xiaowang", "age": 20},
      {"id": 4, "name": "xiaozhang", "age": 21}
    ]
    app.get('/', function (req, res){
      res.sendFile(path.resolve('./views/index.html'))
    })
    app.get('/user', function (req, res) {
      res.sendFile(path.resolve('./views/login.html'))
    })
    
    app.get('/getuser', function (req, res) {
      res.send(userArr.filter(function (item) {
        console.log(item.id, req.query.userid)
        return item.id == req.query.userid
      }))
    })
    app.listen(8090, function (error) {
      console.log('listening on 8090')
    })
    

    2.1.3.接收前台post方式发送过来的数据

    接收post数据,我们可以使用一个叫做body-parser的模块来帮我们完成

    1.第一步,先安装这个模块

    // 先安装这个模块
    npm install body-parser --save
    

    2.第二步,引入这个模块,并且作为插件使用

    var bodyParser = require('body-parser')
    
    app.use(bodyParser.urlencoded({extended: false}))
    

    3.第三步,获取数据

    app.post('/login', function (req, res) {
      res.send(req.body.user)
    })
    

    2.1.4.文件上传

    文件上传需要用到multer插件,先安装multer

    npm install multer --save
    

    接下来需要引入multer

    var multer = require('multer')
    

    配置multer

    // dest 表示 设置上传文件目录
    var upload = multer({dest: './upload'})
    

    单文件上传

    // 处理文件上传请求
    app.post('/upload', upload.single('fl'), function (req, res) {
      res.send(req.file)
    })
    

    多文件上传

    // 多文件上传
    app.post('/upload', upload.array('fl', 3), function (req, res) {
      res.send(req.files)
    })
    

    自定义文件路径和文件名

    // 检查目录是否存在,不存在就创建
    var  createFolder = function(folder) {
      try {
        fs.accessSync(folder)
      } catch (e) {
        fs.mkdirSync(folder)
      }
    }
    var uploadFolder = './upload'
    // 先创建好上传目录
    createFolder(uploadFolder)
    var storage = multer.diskStorage({
      destination: function (req, file, cb) {
        cb(null, uploadFolder)
      },
      filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + new Date().getTime() + path.extname(file.originalname))
      }
    })
    var upload = multer({storage: storage})
    
    app.post('/upload', upload.array('fl', 3), function (req, res) {
      res.send(req.file)
    })
    

    2.2.响应相关

    2.2.1.send方法

    send方法可以返回多种类型数据

    // 返回一个对象
    res.send({"name":"老张", age: 48})
     // 返回数组
    // res.send([1, 2, 3])
    // 报错
    // res.write({"name": "xiaoqiang"})
    // res.end()
    

    2.2.2.sendStatus

    返回状态码

    res.sendHeader(404)
    

    如果没有这个方法,你会这样写:

    res.writeHead(404, {'Content-Type': 'text/plain'})
    res.write("not found!!!!")
    res.end()
    

    很明显第一种写法更简洁

    #2.2.3.redirect
    redirect用于重定向
    

    app.get('/re', function (req, res) {
    res.redirect('http://nodeing.com')
    })

    如果不使用redirect,而使用原生的语法,需要这样写:
    

    res.setHeader('location', 'http://nodeing.com')
    res.writeHead(301)
    res.end()

    
    螺钉课堂视频课程地址:http://edu.nodeing.com
  • 相关阅读:
    sublime开启vim模式
    git命令行界面
    搬进Github
    【POJ 2886】Who Gets the Most Candies?
    【UVA 1451】Average
    【CodeForces 625A】Guest From the Past
    【ZOJ 3480】Duck Typing
    【POJ 3320】Jessica's Reading Problemc(尺取法)
    【HDU 1445】Ride to School
    【HDU 5578】Friendship of Frog
  • 原文地址:https://www.cnblogs.com/dadifeihong/p/12047838.html
Copyright © 2011-2022 走看看