express框架的学习笔记 -1

117 阅读1分钟
备注:这是纯手写,没有通过应用生成器工具 express-generator 创建一个应用的骨架。
const express = require('express')
const app = express();
const fs = require('fs')

//解决跨域中间件
//npm i cors --save安装
const cors = require('cors')
app.use(cors())

静态资源请求(都会有文件后缀名的)

//当http://localhost:4000/pic1.png就会返回public下的pic1.png文件
app.use(express.static('./public'))

数据请求

(1) get请求http://localhost:4000/list/?isGetPackage=true 获取package.json文件的数据

app.get('/list', (req, res) => {
    let { isGetPackage } = req.query;
    if (isGetPackage) {
        fs.readFile('./package.json', 'utf8', function (err, data) {
            if (err) throw err;
            res.type('json')
            res.send(data)
        })
    }
})

(2)post请求

app.use表示使用中间件,也可以自己写.

中间件功能是顺序执行的,因此中间件包含的顺序很重要。

// 下面的app.use的作用是请求来的时候,把请求body接受后parse。next()一定要有
app.use((req, res, next) => { //这个app.use的作用是请求来的时候,把请求body接受后parse。next()一定要有
    let qs = require('qs')
    let chunk = ''
    req.on('data', (chart) => {
        chunk += chart;
    })
    req.on('end', () => {
        req.body = qs.parse(chunk);
        next()
    })
})

//上面的太麻烦,直接使用body-parser中间件最好
//npm i body-parser --save 安装
const bodyParser=require('body-parser')
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

app.post('/add', (req, res) => {
    console.log(req.body)
})


//当找不到资源,返回404
//中间件功能是顺序执行的,因此中间件包含的顺序很重要。
app.use((req, res, next) => {
    res.status(404).end('not find')
    next()//继续往下走
})
app.listen(4000, () => { console.log('Example app listening on port 4000!') })