备注:这是纯手写,没有通过应用生成器工具 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!') })