阅读更多系列文章请访问我的GitHub博客,示例代码请访问这里。
常用请求方式
GET和POST是最常用的HTTP请求方法,除此之外还有DELETE、HEAD、OPTIONS、PUT、TRACE等,但都很少用到。
GET | POST |
---|---|
主要用途是获取数据 | 主要用途是发送数据 |
数据放在HTTP请求Header中,通过URL进行传输,容量≤32K | 数据放在HTTP请求Body中,容量大,通常上限是2G |
处理GET数据
我们可以使用Nodejs自带的url和querystring模块处理接收到的GET数据。
首先新建一个带form表单的HTML文件,讲输入的数据提交到服务器地址:
示例代码:/lesson06/form_get.html
<form action="http://localhost:8080/login" method="get">
用户:<input type="text" name="username"><br/>
密码:<input type="text" name="password"><br/>
<input type="submit" value="提交">
</form>
服务端在接收到请求数据时,可以有3种方式处理数据:
示例代码:/lesson06/server.js
- 将请求数据中的req.url进行字符串切割,再用querystring模块获取数据。
const [ pathname, queryStr ] = req.url.split('?')
const query = querystring.parse(queryStr)
console.log(pathname, query)
- 用URL构造函数实例化一个url对象,从中获取到pathname和search值,再用querystring模块解析search数据。
const url = new URL(`http://localhost:8080${req.url}`)
const { pathname, search } = url
const query = querystring.parse(search.substring(1, url.search.length))
console.log(pathname, query)
- 使用url模块的parse方法,直接解析出数据。
// parse方法第二个参数若传true,则会直接将解析出的query值转为对象形式,否则它只是字符串形式
const { pathname, query } = url.parse(req.url, true)
console.log(pathname, query)