请求和响应

路由回调中包含request 和 response 对象:

app.get('/', (req, res) => {
   res.send('Hello World')
})

Request 对象

request 对象表示 HTTP 请求,包含了请求查询字符串,参数,内容,HTTP 头部等属性。

方法 描述
req.path 获取请求路径
req.query 获取URL的查询参数串
req.route 获取当前匹配的路由
req.baseUrl 获取路由当前安装的URL路径
req.originalUrl 获取原始请求URL
req.params 获取路由的parameters
req.hostname 获取主机名
req.ip 获取IP地址
req.body 获得「请求主体」
req.cookies 获得Cookies
req.is() 判断请求头Content-Type的MIME类型
req.get() 获取指定的HTTP请求头
req.accepts() 检查可接受的请求的文档类型
req.subdomains 获取子域名
req.app 当callback为外部文件时,用req.app访问express的实例
req.protocol 获取协议类型
req.fresh / req.stale 判断请求是否还「新鲜」

Response 对象

response 对象表示 HTTP 响应,即在接收到请求时向客户端发送的 HTTP 响应数据。

方法 描述
res.download() 提示下载文件。
res.end() 终结响应处理流程。
res.json() 发送一个 JSON 格式的响应。
res.jsonp() 发送一个支持 JSONP 的 JSON 格式的响应。
res.redirect() 重定向请求。
res.render() 渲染视图模板。
res.send() 发送各种类型的响应。
res.sendFile 以八位字节流的形式发送文件。
res.sendStatus() 设置响应状态代码,并将其以字符串形式作为响应体的一部分发送。

对get和post请求的处理

get.html

<form action="http://127.0.0.1:8081/process_get" method="GET">
  First Name:
  <input type="text" name="first_name">
  <br> Last Name:
  <input type="text" name="last_name">
  <input type="submit" value="Submit">
</form>

post.html

<form action="http://127.0.0.1:8081/process_post" method="POST">
  First Name:
  <input type="text" name="first_name">
  <br> Last Name:
  <input type="text" name="last_name">
  <input type="submit" value="Submit">
</form>

app.js 中添加

app.get('/get.html', function (req, res) {
  res.sendFile( __dirname + "/" + "get.html" );
})
app.get('/post.html', function (req, res) {
  res.sendFile( __dirname + "/" + "post.html" );
})
app.get('/process_get', function (req, res) {
  let response = {
    "first_name": req.query.first_name,
    "last_name": req.query.last_name
  }
  console.log(response)
  res.end(JSON.stringify(response))
})
// 创建 application/x-www-form-urlencoded 编码解析
let bodyParser = require('body-parser')
let urlencodedParser = bodyParser.urlencoded({ extended: false })
app.post('/process_post', urlencodedParser, function (req, res) {
  let response = {
    "first_name":req.body.first_name,
    "last_name":req.body.last_name
  }
  console.log(response);
  res.end(JSON.stringify(response))
})

访问 http://localhost:8081/get.htmlhttp://localhost:8081/post.html 可以测试两种请求的结果。

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress