HPPT请求与响应处理

GET请求参数

参数被放置在浏览器地址栏中,例如:http://localhost:3000/?name=zhangsan&age=20.?后面是请求参数,也就是额外携带的数据。

在Node.js提供了内置模块,可以通过内置模块中的方法,来处理这个请求参数。

引入内置模块url(这个模块用来处理URL请求地址):

const url = require('url');

url这个模块下面有一个parse方法,用来解析url。

//parse方法最后会返回一个对象,会把url里面的各个部分都放到对象的一个
//属性里面。  
url.parse(req.url,true)
parse里面有两个参数,第一个参数是要解析的url地址,第二个参数是将'查询参数'解析成对象形式。
  • //url里面的属性: //search:查询参数 //query:和search差不太多,区别是search后面有?,query后面没有? //pathname:请求地址
  • 参数被放置在浏览器地址栏中 
  • 获取get参数使用req.url

POST请求参数

<form method="post" action="http://localhost:3000">
<input type="text" name="username">
<input type="password" name="password">
<input type='submit'>
</form>

post参数是通过事件的方式接收的,data事件和end事件。post参数理论上数据量可以是无限的,作为服务器来讲为了减轻压力,post参数不是一次就接收完的。比如说传递一个100兆的数据,可能分10次接收,每一次接收10兆。当有请求参数传递的时候就会触发data事件,当请求参数传递完成时会触发end事件。

const http = require('http');
const app = http.createServer();
//处理服务器端接收到的字符串
const querystring = require('querystring'); app.on('request',(req,res)=>{ //由于post参数不是一次传递完的,所以需要声明一个变量,当触发data时将传递过来的参数与声明的变量进行拼接。
let postParams = ''; req.on('data',params=>{
postParams+=params;
}) }) 
//当end事件触发时,输出参数。
req.on('end',()=>{
//使用querystring下的parse方法,将postParams转换为对象
console.log(querystring.parse(postParams));
})
res.end('ok')
})
  •  post参数被放置在请求体中进行传输
  • 获取post参数需要使用data事件和end事件
  • 获取到的post参数是一个字符串的格式,使用内置模块querystring下的parse方法把参数转换为对象格式
上一篇:PHP post发出,接收数据


下一篇:HttpClient发送Post与Get请求