Node.js GET/POST

作者: LU7IN | 来源:发表于2018-06-10 13:30 被阅读0次

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

    相关文章

      网友评论

        本文标题:Node.js GET/POST

        本文链接:https://www.haomeiwen.com/subject/kjmfeftx.html