在学习关于Node.js的GET/POST方法之前,我们先来大致的了解一下什么时GET/POST请求。
HTTP协议定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET、POST、PUT、DELETE。
URL(User Resources Location)全称是资源描述符,可以认为一个URL地址用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。
GET 和 POST请求方法:
在客户机和服务器之间进行请求-响应时,最常被用到的方法是GET 和 POST。
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据。
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
获取GET请求
由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数。
//http模块主要用于HTTP服务器与客户端的连接
var http = require('http')
//url模块主要用于URL的处理与解析
var url = require('url')
//util模块主要用于Node.js内部的API请求
var util = require('util')
http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'})
//util.inspect() 方法返回 object 的字符串表示,主要用于调试。
//url.parse() 方法会解析一个 URL 字符串并返回一个 URL 对象。
res.end(util.inspect(url.parse(req.url, true)))
}).listen(3000)
打开命令行运行我们的程序,然后在浏览器中打开http://127.0.0.1:3000/user?name=小米&url=www.mi.com&author=雷军
可以在query中看到我们的请求参数name,url,author。
获取URL参数
改写一下代码我们便可以把我们想要的参数给获取到了。
var http = require('http')
var url = require('url')
var util =require('util')
http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'})
//url.parse方法来解析URL中的参数
var params = url.parse(req.url, true).query
res.write("网站名:" + params.name)
res.write("\n")
res.write("网站URL:" + params.url)
res.write("\n")
res.write("作者:" + params.author)
res.end()
}).listen(3000)
图片.png
获取POST请求
这里简单地手写了一个HTML地表单,然后提交就可以获取到HTML表单地内容了。
var http = require('http')
//querystring模块用于解析和格式化URL字符串
var querystring = require('querystring')
var postHTML =
'<html><head><meta charset="utf-8"><title>获取POST请求内容</title></head>' +
'<body>' +
'<form method="post">' +
'用户名: <input name="name"><br>' +
'密码: <input name="password"><br>' +
'<input type="submit">' +
'</form>' +
'</body></html>'
http.createServer(function(req, res) {
var body = ''
req.on('data', function(chunk) {
body += chunk
})
req.on('end', function() {
//解析参数
body = querystring.parse(body)
//设置响应头部和编码
res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
if(body.name && body.password) {
res.write("用户名:" + body.name)
res.write('<br>')
res.write("密码:" + body.password)
} else {
res.write(postHTML)
}
res.end()
})
}).listen(8000)
图片.png
图片.png
网友评论