// index.js
const express = require('express');
const app = express();
const router = express.Router();
router.get('/', (req, res) => {
// 获取数据 ?name='xxx'&age=18 -> { name: "'xxx'", age: '18' }
console.log(req.query)
// 返回数据
res.send('get')
})
router.post('/', (req, res) => {
// 获取数据 {"username":"xxx","password":123} -> [Object: null prototype] { username: 'xxx', password: '123' }
console.log(req.body)
res.send({ ok: 1 })
})
// 配置解析 post 参数的中间件 ?username='xxx'&password=123 形式
app.use(express.urlencoded({ extended: false }));
// json 形式
app.use(express.json());
app.use('/', router);
app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});
1. 获取请求参数
app.get('/', (req, res) =>{
// 原生操作
console.log(req.method, req.url, req.headers, req.httpVersion)
// express 操作
console.log(req.path,req.query)
// 获取 ip
console.log(req.ip) // IP 地址可能是 ::1,这是 IPv6 的本地主机回环地址,等同于 IPv4 的 127.0.0.1
// 获取请求头
console.log(req.get('host')) // localhost:3000
// 结束响应前返回的最后一条数据
res.end('hello world')
})
1.1 获取请求体数据
const express = require('express');
const app = express();
var bodyParser = require('body-parser')
var urlencodedParser = bodyParser.urlencoded({ extended: false })
app.get('/login', (req, res) => {
// res.send('登录页面')
res.sendFile(__dirname + '/form.html')
})
app.post('/login', urlencodedParser, (req, res) => {
res.send('获取用户信息')
// res.send(req.body) // 报错:Cannot set headers after they are sent to the client
console.log(req.body)
})
app.listen(3000, () => {
console.log('服务器启动成功')
})
body-parse 包的具体用法:NPM
2. 获取响应参数
app.get('/', (req, res) => {
// 原生相应
res.statusCode = 404
res.statusMessage = 'Not Found'
res.setHeader('Content-Type', 'text/html')
res.write('<h1>Not Found</h1>')
res.end('<h1>Not Found</h1>')
// express 响应(可以链式调用)
res.status(404)
res.set('Content-Type', 'text/html')
res.send('<h1>Not Found</h1>')
res.redirect('/')
res.download('./data.json') // 响应下载(请求即自动下载)
res.json({
name: 'xx',
age: 19
}) // 响应 json,响应数据输出在页面上
res.sendFile('./data.json') // 响应文件内容
})
8586

被折叠的 条评论
为什么被折叠?



