nodejs的get与post

◇◆丶佛笑我妖孽 提交于 2020-02-05 21:43:20

get

由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数。
get.js

var http = require('http');
var url =  require('url');
var util = require('util');

http.createServer(function(req, res) {
    var data = url.parse(req.url, true);
    console.log('Request Data: ');
    console.log(util.inspect(data));
    var params = data.query;
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('Website Name:  ' + params.name);
    res.write('<br>');
    res.write('Website Url: ' + params.url);
    res.end();
}).listen(8888);

输入url:http://localhost:8888/?name=jason_cuijiahui&url=https://blog.csdn.net/jason_cuijiahui
在这里插入图片描述

$ node get.js
Request Data: 
Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?name=jason_cuijiahui&url=https://blog.csdn.net/jason_cuijiahui',
  query: [Object: null prototype] {
    name: 'jason_cuijiahui',
    url: 'https://blog.csdn.net/jason_cuijiahui'
  },
  pathname: '/',
  path: '/?name=jason_cuijiahui&url=https://blog.csdn.net/jason_cuijiahui',
  href: '/?name=jason_cuijiahui&url=https://blog.csdn.net/jason_cuijiahui'
}
Request Data: 
Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: null,
  query: [Object: null prototype] {},
  pathname: '/favicon.ico',
  path: '/favicon.ico',
  href: '/favicon.ico'
}

Post

POST 请求的内容全部的都在请求体中,http.ServerRequest 并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作。

比如上传文件,而很多时候我们可能并不需要理会请求体的内容,恶意的POST请求会大大消耗服务器的资源,所以 node.js 默认是不会解析请求体的,当你需要的时候,需要手动来做。

post.js

var http = require('http');
var util = require('util');
var querystring = require('querystring');
 
var postHTML = 
  '<html><head><meta charset="utf-8"><title>Post Example</title></head>' +
  '<body>' +
  '<form method="post">' +
  'Website Name: <input name="name"><br>' +
  'Website URL: <input name="url"><br>' +
  '<input type="submit">' +
  '</form>' +
  '</body></html>';
 
http.createServer(function (req, res) {
    // 定义了一个body变量,用于暂存请求体的信息
    var body = "";
    req.on('data', function (chunk) {
        // 通过req的data事件监听函数,每当接受到请求体的数据,就累加到data变量中
        body += chunk;
    });
    // 在end事件触发后,通过querystring.parse将data解析为真正的POST请求格式
    req.on('end', function () {
        // 解析参数
        body = querystring.parse(body);
        console.log('Request Data: ');
        console.log(util.inspect(body));
        // 设置响应头部信息及编码
        res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});
        if(body.name && body.url) { // 输出提交的数据
            res.write('Website Name:  '  + body.name);
            res.write('<br>');
            res.write('Website Url: '  + body.url);
        } else {  // 输出表单
            res.write(postHTML);
        }
        res.end();
    });
}).listen(8888);

在这里插入图片描述
在这里插入图片描述

node post.js 
Request Data: 
[Object: null prototype] {}
Request Data: 
[Object: null prototype] {}
Request Data: 
[Object: null prototype] {
  name: 'jason_cuijiahui',
  url: 'https://blog.csdn.net/jason_cuijiahui'
}
Request Data: 
[Object: null prototype] {}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!