Node.js处理 GET/POST请求方法详解

我们需要通过查看 HTTP 请求,

从中提取出请求的 URL 以及 GET/POST 参数,

随后“路由”根据这些数据来执行相应的代码。

为了解析这些数据,我们需要额外的 Node.js 模块,

它们分别是 url 和 querystring,具体的使用方法可以点击链接查看相应手册或参考下表:

 代码如下 复制代码
                               url.parse(string).query
                                           |
           url.parse(string).pathname      |
                       |                   |
                       |                   |
                     ------ -------------------
http://localhost:8888/start?foo=bar&hello=world
                                ---       -----
                                 |          |
                                 |          |
        querystring.parse(string)["foo"]    |
                                            |
                         querystring(string).parse["hello"]

既然知晓了 Node.js 处理 GET/POST 请求的原理,我们先来写个简单的 GET 请求处理:

 代码如下 复制代码
var http = require('http');
var url = require('url');
 
http.createServer(function (req, res) {
    // 获取 URL 路径并在控制台上打印
    var pathname = url.parse(req.url).pathname;
    console.log('Request for ' + pathname + ' received.');
 
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello Worldn');
}).listen(1337, '127.0.0.1');
 
console.log('Server running at http://127.0.0.1:1337/');

到此我们已经可以通过 URL 路径来区别不同的 GET/POST 请求,

相比较 GET 请求,POST 请求一般比较“重“,为了使整个过程非阻塞,

Node.js 会将 POST 数据拆分成很多小的数据块,然后通过触发特定的事件,将这些小数据块传递给回调函数。

这里特定的事件包括:data(新的小数据块到达)和 end(所有的数据都已经接收完毕),

具体的使用方法可以点击链接查看相应手册或参考以下代码:

 代码如下 复制代码

var http = require('http');
 
http.createServer(function (req, res) {
    var postData = '';
 
    // 设置接收数据编码格式为 UTF-8
    req.setEncoding('utf8');
 
    // 接收数据块并将其赋值给 postData
    req.addListener('data', function(postDataChunk) {
        postData += postDataChunk;
    });
 
    req.addListener('end', function() {
        // 数据接收完毕,执行回调函数
    });
 
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello Worldn');
}).listen(1337, '127.0.0.1');
 
console.log('Server running at http://127.0.0.1:1337/');

发送 post 请求 带参数

 代码如下 复制代码

var http = require('http');
var querystring = require('querystring');

var post_data = querystring.stringify({
         product : 'club',
         sign : 'ddddddddddddddd',
         sender: '发送者的名字:超级管理员',
         uids : ['ffwq@qq.com', 'ffqwf@www.com'],
         msg : 'wwww'
});

var options = {
    host: '10.11.442.33',
    port: 80,
    path: '/ww1',
    method: 'POST'
};

var req = http.request(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});

// write data to request body
req.write(post_data + "n");
req.end();

时间: 2024-12-21 00:36:39

Node.js处理 GET/POST请求方法详解的相关文章

Node.js 和 npm 卸载安装方法详解

为了学 Vue.js,用 npm 装了 Vue,经过我的折腾,npm 被我玩坏了,干脆连 Node.js 也重新装一个,下面记录一下在本地 Windwos 环境用 vagrant 搭建的虚拟机(Homestaead)和生产环境阿里云 CentOS 系统安装 Node.js 的步骤,以及 npm 安装依赖的不同之处. 使用源码编译的方式安装 node.js.首先将机子上的 Node.js 卸载,我直接贴上 Stack Overflow 上提供的步骤: 1.卸载 npm 和 Node.js 先卸载

JS JSOP跨域请求实例详解_javascript技巧

在项目开发中遇到跨域的问题,一般都是通过JSONP来解决的.但是JSONP到底是个什么东西呢,实现的原理又是什么呢.在项目的空闲时间可以好好的来研究一下了. 1.什么是JSONP? 要了解JSONP,不得不提一下JSON,那么什么是JSON? JSON is a subset of the object literal notation of JavaScript. Since JSON is a subset of JavaScript, it can be used in the langu

Node.js 条形码识别程序构建思路详解_node.js

在这篇文章中,我们将展示一个非常简单的方法构建一个自定义的 Node 模块,该模块封装了Dynamsoft Barcode Reader SDK ,支持 Windows.Linux 和 OS X,同时我们将演示如何集成这块模块实现一个在线的条形码读取应用. 越来越多的 Web 开发者选择 Node 来构建网站,因为使用 JavaScript 来开发复杂的服务器端 Web 应用越来越便利.为了扩展在不同平台下的 Node 的功能,Node 允许开发者使用 C/C++ 来创建扩展. 介绍 Dynam

基于js对象,操作属性、方法详解_javascript技巧

一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在Javascript中,已经存在一些标准的类,例如Date.Array.RegExp.String.Math.Number等等,这为我们编程提供了许多方便.但对于复杂的客户端程序而言,这些还远远不够. 与Java不同,Java2提供给我们的标准类很多,基本上满足了我们的编程需求,但是Javascript提供的标准类很

原生js封装的一些jquery方法(详解)_javascript技巧

用js封装一些常用的jquery方法 记录一下 hasClass:判断是否有class function hasClass(ele, cls) { if (!ele || !cls) return false; if (ele.classList) { return ele.classList.contains(cls); } else { return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')); } } addCl

D3.js实现折线图的方法详解_javascript技巧

前言 D3.js是一个帮助开发者操纵基于数据的文档的JavaScript类库,在<D3.js实现柱状图的方法详解>中已经给大家介绍过如何用D3.js来实现一个简单的柱状图了,今天我们来学习用D3.js来实现折线图,感兴趣的朋友们下面来一起看看吧. 折线图由坐标轴.线条和点组成.和实现柱状图一样,我们还是先把大概的画图框架搭起来,代码如下(别忘了添加D3.js): <!DOCTYPE html> <html lang="en"> <head>

JS组件Bootstrap Select2使用方法详解_javascript技巧

在介绍select组件的时候,之前分享过一篇JS组件中bootstrap multiselect两大组件较量的文章,这两个组件的功能确实很强大,本文分享下select组件的一些用法和特性. 一些通用的单选.多选.分组等功能这里就不多做介绍了,multiselect这方面是强项.重点介绍下select2的一些特性效果:一.特性效果1.多选效果 可以设置最多只能选几个 2.图文结合的效果 3.远程搜索功能(即在用户输入搜索内容时动态去后台取数据) 输入内容前 输入空格搜索出全部 滚动条滑动到底部自动

js显示动态时间的方法详解_javascript技巧

本文实例讲述了js显示动态时间的方法.分享给大家供大家参考,具体如下: Date对象的方法 Date 对象能够使你获得相对于国际标准时间(格林威治标准时间,现在被称为 UTC-Universal Coordinated Time)或者是 Flash 播放器正运行的操作系统的时间和日期.要使用Date对象的方法,你就必须先创建一个Date对象的实体(Instance). Date 对象必须使用 Flash 5 或以后版本的播放器. Date 对象的方法并不是静态的,但是在使用时却可以应用于所指定的

Node.js中路径处理模块path详解_node.js

前言 在node.js中,提供了一个path某块,在这个模块中,提供了许多使用的,可被用来处理与转换路径的方法与属性,将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了.下面我们就来详细介绍下关于Node.js中的路径处理模块path. 获取路径/文件名/扩展名      获取路径:path.dirname(filepath)      获取文件名:path.basename(filepath)      获取扩展名:path.extname(filepath) 获取所在路径 例子如下