【Express】获取请求参数和响应参数

// 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')  // 响应文件内容
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秀秀_heo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值