- 环境搭建
1. 安装express
npm install express -save
2. 安装自动重启工具 nodemon
npm install -g nodemon
3. 加载express:
var express = require('express');
4. 使用express:
var app = express();
5. 启动一个服务器来监听连接:
app.listen(3000, function () {
console.log('server is running')
})
- get请求:
app.get('/', function (request, response) {
var responseObject = {
name: 'Leiliming',
arr: [{ name: 'yu' }, 3, 4, 5]
}
//将内容返回到页面上:
response.send(responseObject)
})
- :id
app.get('/profile/:id', function (request, response) {
console.dir(request.params)
response.send("You reuquest to see a profile page " + request.params.id)
})
冒号id 相当于一个变量,用户请求的时候值是什么,用request.params.id取出来的就是什么
id是你自己设置的变量名,也可以换成别的名字
这种写法也可以 /profile/:id/:name/:high
- 查询字符串query
假设用户请求: http://localhost:3000/?find=hot
那么console.dir(request.query) 打印{find:hot}
假设用户请求: http://localhost:3000/?find=hot&name=lei
那么console.dir(request.query) 打印{ find: 'hot', name: 'lei' }
app.get('/', function (request, response) {
console.dir(request.query)
response.send(request.query.find)
})
- 处理POST请求
作用是让我们可以获取到post请求中body的数据
1. 安装body-parser中间件解析post
https://github.com/expressjs/body-parser
npm install body-parser --save
var bodyParser = require('body-parser')
-------------------------------------------------------------------------------------------
// 解析表单: parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/po',function (request, response) {
console.dir(request.body)
response.send(request.body.name)
})
-------------------------------------------------------------------------------------------
//解析json: parse application/json
app.use(bodyParser.json())
app.post('/po',function (request, response) {
console.dir(request.body)
response.send(request.body.name)
})
-------------------------------------------------------------------------------------------
//同时解析:
var jsonParser = bodyParser.json()
var urlencodedParser = bodyParser.urlencoded({ extended: true })
app.post('/po',urlencodedParser, function (request, response) {
console.dir(request.body)
response.send(request.body.name)
})
app.post('/upload',jsonParser, function (request, response) {
console.dir(request.body)
response.send(request.body.name)
})
2.express自带的解析json的方法
app.use(express.json())
- 模拟用户请求接口的小方法
1. vscode安装测试插件REST Client模拟用户请求
2. postman工具
- 上传文件
1. 安装multer库,处理文件上传操作
npm install --save multer
2.使用multer
var multer = require('multer')
var createFolder = function (folder) { //判断有没有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) {
//1. 将保存文件名设置为 字段名 + 时间戳,比如 logo-1478521468943
// cb(null, file.fieldname + '-' + Date.now())
//2. 将保存的文件名设置为 上传文件原本的名字
cb(null, file.originalname)
}
})
var upload = multer({ storage: storage })
3.html怎么写上传文件?
form表单中,文件上传需要增加的属性 enctype="multipart/form-data"
<form action="/upload" method="post" enctype="multipart/form-data">
<h2>单图上传</h2>
<input type="file" name="logo">
<input type="submit" value="提交">
</form>
4.接口写法
app.post('/upload', upload.single('logo'), function (request, response) {
response.send({ 'ret_code': 0 })
// ret_code,return code的缩写 ,一般来说0表示成功,1表示失败
})
- 根据请求加载html文件
1. 引入fs模块(NodeJS 中,所有与文件操作都是通过 fs 核心模块来实现)。
var fs = require('fs')
app.get('/form', function (request, response) {//获取html并显示
//方法1:
// var form = fs.readFileSync('./form.html', { encoding: 'utf8' })
// response.send(form)
方法2:
response.sendFile(__dirname + './form.html')
})