摘要

在很多情况下,我们的web服务器都需要接受客户端浏览器传递的参数或者数据。最常见的是get和post请求。

获取get请求的内容

get请求传递的参数在url中,参数部分在?后面。因此可以手动解析后面的内容作为get请求的参数。node.js中url模块中的parse函数提供了这个功能。

一个例子

var http=require("http");
var url=require("url");
var util=require("util");
http.createServer(function(request,response){response.writeHead(200,{"Content-Type":"text/plain"});response.end(util.inspect(url.parse(request.url,true)));
}).listen(5544);

启动服务器

浏览器访问

使用parse解析url中的参数

webserver.js核心代码如下:

var http=require("http");
var url=require("url");
var util=require("util");
function start(route){function onRequest(request,response){response.writeHead(200,{"Content-Type":"text/plain"});//解析url参数var params=url.parse(request.url,true).query;response.write("my name is "+params.name);response.end();};http.createServer(onRequest).listen(5544);console.log("web server has started.");
};
exports.start=start;

route.js代码如下:

function route(pathname){console.log("request the route "+pathname);
};
exports.route=route;

user.js代码如下

var server=require("./webserver");
var router=require("./router");
server.start(router.route);

启动webserver

浏览器浏览

post请求

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

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

一个例子

var http=require("http");
var url=require("url");
var util=require("util");
var querystring=require("querystring");
function start(route){function onRequest(request,response){//定义一个post变量,用于暂时村塾请求体信息。var post='';//通过request的data事件监听函数,每当接受到请求的数据,就累加到post变量中request.on("data",function(chunk){post+=chunk;});//在end事件触发后,通过querystring.parse将post解析为真正的post请求格式,然后想客户端返回。request.on("end",function(){post=querystring.parse(post);response.end(util.inspect(post));});response.writeHead(200,{"Content-Type":"text/plain"});//解析url参数var params=url.parse(request.url,true).query;response.write("my name is "+params.name);response.end();};http.createServer(onRequest).listen(5544);console.log("web server has started.");
};
exports.start=start;

学习资料

http://www.runoob.com/nodejs/node-js-get-post.html

转载于:https://www.cnblogs.com/wolf-sun/p/6476373.html

[Node.js]get/post请求相关推荐

  1. Node.js跨域请求解决方案

    Node.js跨域请求解决方案 一.缘由: 初到公司,老大让去解决之前项目客户提出的一个小问题,对某一模块进行访问验证,之前的项目是PHP做的,对此不了解,因此不打算先学习PHP再去解决问题,考虑到客 ...

  2. 关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施

    原文: 关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施 自己的一点理解: 1: Node.js提供的HttpServer默认设置了超时时间为2分钟,当一个请求的 ...

  3. node.js request get 请求怎么拿到返回的数据_使用JS和NodeJS爬取Web内容

    作者 | Shenesh Perera译者 | 王强策划 | 李俊辰这些年来 Javascript 进步飞快,又引入了称为 NodeJS 的运行时,所以已经成为了最流行和使用最广泛的语言之一.不管你要 ...

  4. node.js中获取请求当前页的前一页URL地址

    2019独角兽企业重金招聘Python工程师标准>>> PHP中获取请求当前页的前一页URL地址,用如下代码就可以实现: $_SERVER['HTTP_REFERER'] 在node ...

  5. Node.js发送HTTP请求

    在Node.js中发送HTTP请求,用的比较多的是request组件,该组件的功能非常强大,但是该组件需要通过回调函数的方式获取操作的结果. 由于现在Node.js对ES6已经支持的比较好了,我们更希 ...

  6. Node.JS跨域请求配置方案

    今天在用node开发的过程中,再次遇到同源策略的问题: 在客户端调用服务端获取数据时,Chrome 浏览器中报错如下: Access to XMLHttpRequest at 'http://loca ...

  7. node.js request get 请求怎么拿到返回的数据_NodeJS运维: 从 0 开始 Prometheus + Grafana 业务性能指标监控...

    为什么需要指标监控告警 一个复杂的应用,往往由很多个模块组成,而且往往会存在各种各样奇奇怪怪的使用场景,谁也不能保证自己维护的服务永远不会出问题,等用户投诉才发现问题再去处理问题就为时已晚,损失已无法 ...

  8. node.js request get 请求怎么拿到返回的数据_从零开始用nodejs写一个简单的静态服务器

    nodejs搭建服务器第一步 const http = require("http")const PORT = 8000 const server = http.createSer ...

  9. Node.js + Express 接口请求(GET、POST、PUT)事例

    路由 路由是指应用程序的端点(URI)如何响应客户端请求.有关路由的介绍,请参阅基本路由. 您可以使用Express app对象的方法定义路由,这些方法对应于HTTP方法; 例如,app.get()处 ...

最新文章

  1. 微信架构 支付架构(上)
  2. python遗传算法八皇后_遗传算法之:八皇后问题
  3. 【NLP】如何提升BERT在下游任务中的性能
  4. 关于ViewTreeObserver的理解
  5. C#高级应用之CodeDomProvider引擎篇 .
  6. 在落雨的鼓浪屿打着伞到处走走找个地方坐坐
  7. 小程序api 分享scene_微信小程序 插件调用API的限制
  8. iOS AVPlayer视频播放器
  9. MFC学生信息管理系统
  10. 2017 追梦 远方
  11. 微信小程序之在线任务发布与接单平台
  12. java跳转页面_几种方式实现Javaweb页面跳转
  13. Windows安全更新出现0x800f081f错误解决方案
  14. Android快速开发推荐10个框架Android 快速开发框架:afinal、ThinkAndroid、andBase、KJFrameForAndroid、SmartAndroid、
  15. 一图了解群、交换群、环、交换环、整环、域的区别与联系
  16. 第三方支付接入之支付宝当面付
  17. k2虚拟服务器功能,配置图形加速的View虚拟桌面-NVIDIA GRID K2使用指南
  18. Bitwig Studio 4 v4.3 WiN-MAC-Linux 跨多平台音乐制作软件
  19. CSharp(C#)语言_委托和事件区别详解
  20. SpringBoo Mybatis Druid配置多数据源

热门文章

  1. Sublime Text官方文档 中英文版本
  2. Java生鲜电商平台-微服务架构概述
  3. Oracle 数据库字典 sys.obj$ 表中关于type#的解释
  4. js性能优化--学习笔记
  5. 编译安装 apache 2.4.6
  6. 思科携手中兴掌握3G话语权 剑指华为3COM组合
  7. TCP/IP(五):TCP 协议详解
  8. BZOJ2154: Crash的数字表格 BZOJ2693: jzptab
  9. 20145225 《信息安全系统设计基础》第10周学习总结
  10. Android游戏开发系统控件-CheckBox