我爱编程

Node.js GET/POST

2018-06-10  本文已影响0人  LU7IN

在学习关于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=雷军

图片.png

可以在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
上一篇下一篇

猜你喜欢

热点阅读