下载
响应内容
响应字符串
app.get('/', (req, res) => {
res.setHeader('Content-Type', 'text/html;charset=utf-8')
res.send('<h1>你好我是Express框架</h1>')
})
响应JSON
app.get('/', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.json({"name": "zs", "age": 66})
})
响应JSONP
app.get('/', (req, res) => {
res.jsonp({"a": 1, "b": 2, "c": [1,2,3,4], "d": {"e": 678}})
})
$.ajax({
"url": "http://127.0.0.1:3000",
"dataType": "JSONP",
"success": function (data) {
console.log(data, 'data');
},
"callback": "mashibing"
})
响应一个 html
app.get('/', (req, res) => {
res.sendFile(__dirname + '/public/index.html')
})
设置静态目录
app.use(express.static(__dirname + '/public'))
设置模板引擎
app.set('view engine', 'ejs')
app.set('views')
请求参数获取
get请求参数获取
app.get('/get_data', (req, res) => {
console.log(req.query);
})
post请求参数获取
- 借助第三方包处理 post 请求中的参数 npm i formidable --save
const formidable = require('formidable')
app.post('/post_data', (req, res) => {
const form = formidable({multiples: true})
form.parse(req, (err, fields, files) => {
console.log(fields);
})
})
delete请求参数获取
const formidable = require('formidable')
app.delete('/delete_data', (req, res) => {
const form = new formidable.IncomingForm()
form.parse(req, function (err, fields, files) {
console.log(fields);
res.send(`成功获取delete参数`)
})
})
put请求参数获取
const formidable = require('formidable')
app.put('/put_data', (req, res) => {
const form = new formidable.IncomingForm()
form.parse(req, function (err, fields, files) {
console.log(fields);
res.send(`成功获取put参数`)
})
})
cookie
app.get('/', function (req, res) {
res.cookie('t', "abc123", {'maxAge': 1000 * 60 * 60 * 24})
res.send('设置cookie')
})
使用 cookie-parser 来获取前端带来的cookie信息
- npm install cookie-parser
const express = require('express')
const cookieParser = require('cookie-parser')
const app = express()
app.use(cookieParser())
app.get('/', function (req, res) {
console.log(req.cookies);
res.send('获取cookie')
})
session
- 服务端用来保存数据,与浏览器中的 window.sessionStorage 没有关系
- npm i express-session
const express = require('express')
const session = require('express-session')
const app = express()
app.use(session({
secret: 'keyboard cat', // 签名
name: 'zhangsan', // 返回客户端签名的 key
resave: false, // 默认为true即使session没有发生变化也会强制保存
saveUninitialized: true, // 强制将没有初始化的session存储起来
cookie: { maxAge: 86400}, // 设置 cookie
rolling: true, // 每次请求时强行设置 cookie 这将重置cookie的过期时间
}))
app.get('/:name', function (req, res) {
// 保存到 session 中
req.session.name = req.params.name
res.send('首页')
})
app.listen(3000, () => {
console.log('listen 3000 ok')
})
跨域
const express = require('express')
const app = express()
app.get('/', (req, res) => {
// 配置请求的域名 * 代表通配符
res.header('Access-Control-Allow-Origin', '*');
// 支持跨域请求类型
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE');
// 配置请求头信息 包含字符集等
res.header('Content-Type', 'application/json;charset=utf-8')
res.json({
msg: '配置完成'
})
})
app.listen(3000)