iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >详解Node.Js如何处理post数据
  • 925
分享到

详解Node.Js如何处理post数据

如何处理详解数据 2022-06-04 17:06:37 925人浏览 泡泡鱼
摘要

实现思路 将data和end事件的回调函数直接放在服务器中,在data事件回调中收集所有的POST数据,当接收到所有数据,触发end事件后,其回调函数调用请求路由,并将数据传递给它,然后,请求路由再将该数

实现思路

将data和end事件的回调函数直接放在服务器中,在data事件回调中收集所有的POST数据,当接收到所有数据,触发end事件后,其回调函数调用请求路由,并将数据传递给它,然后,请求路由再将该数据传递给请求处理程序。

实现步骤

第一步我们设置了接收数据的编码格式为UTF-8,第二步注册了“data”事件的监听器,用于收集每次接收到的新数据块,并将其赋值给postData 变量,最后第三步我们将请求路由的调用移到end事件处理程序中,以确保它只会当所有数据接收完毕后才触发,并且只触发一次。我们同时还把POST数据传递给请求路由

示例代码

index.js


var server = require("./server"); 
var router=require("./router"); 
var requestHandlers=require("./requestHandlers"); 
 
var handle = {} 
handle["/"] = requestHandlers.start; 
handle["/start"] = requestHandlers.start; 
handle["/upload"] = requestHandlers.upload; 
 
server.start(router.route,handle); 

server.js


var Http = require("http"); 
var url=require("url"); 
 
function start(route,handle) { 
 function onRequest(request, response) { 
  var postData=""; 
    var pathname=url.parse(request.url).pathname; 
  console.log("Request for"+pathname+"received."); 
    
   request.setEncoding("utf8"); 
    
   request.addListener("data", function(postDataChunk) { 
     postData += postDataChunk; 
     console.log("Received POST data chunk '"+ 
     postDataChunk + "'."); 
  }); 
 
  request.addListener("end", function() { 
   route(handle, pathname, response, postData); 
  }); 
    //route(handle,pathname,response); 
   
  //response.writeHead(200, {"Content-Type": "text/plain"}); 
  //response.write("this is a demo"); 
  //response.end(); 
 } 
 
 http.createServer(onRequest).listen(5656,'127.0.0.1'); 
 console.log("Server has started. localhost:5656"); 
} 
 
exports.start = start;

router.js


function route(handle,pathname,response,postData){ 
  console.log("About to route a request for"+pathname); 
  if(typeof handle[pathname]=='function'){ 
    handle[pathname](response,postData); 
  } 
  else{ 
    console.log("no request handler found for"+pathname); 
    response.writeHead(404, {"Content-Type": "text/plain"}); 
  response.write("404 Not found"); 
  response.end(); 
  } 
} 
exports.route=route; 

requestHandlers.js


//var querystring = require("querystring"); 
 
function start(response,postData) { 
 console.log("Request handler 'start' was called."); 
 
 var body = '<html>'+ 
  '<head>'+ 
  '<meta http-equiv="Content-Type" content="text/html; '+ 
  'charset=UTF-8" />'+ 
  '</head>'+ 
  '<body>'+ 
  '<fORM action="/upload" method="post">'+ 
  '<textarea name="text" rows="20" cols="60"></textarea>'+ 
  '<input type="submit" value="Submit text" />'+ 
  '</form>'+ 
  '</body>'+ 
  '</html>'; 
 
  response.writeHead(200, {"Content-Type": "text/html"}); 
  response.write(body); 
  response.end(); 
} 
 
function upload(response,postData) { 
 console.log("Request handler 'upload' was called."); 
 response.writeHead(200, {"Content-Type": "text/plain"}); 
 response.write("You've sent: " + postData); 
 response.end(); 
} 
 
exports.start = start; 
exports.upload = upload; 

运行:node mynode/index

浏览器输入http://localhost:5656/

查看图片

结果:

查看图片

在文本框里输入“I LOVE YOU” 点击提交

查看图片

查看图片

使用querystring模块只提取文本,修改一下requestHandlers.js使只返回文本


var querystring = require("querystring"); 
 
function start(response,postData) { 
 console.log("Request handler 'start' was called."); 
 
 var body = '<html>'+ 
  '<head>'+ 
  '<meta http-equiv="Content-Type" content="text/html; '+ 
  'charset=UTF-8" />'+ 
  '</head>'+ 
  '<body>'+ 
  '<form action="/upload" method="post">'+ 
  '<textarea name="text" rows="20" cols="60"></textarea>'+ 
  '<input type="submit" value="Submit text" />'+ 
  '</form>'+ 
  '</body>'+ 
  '</html>'; 
 
  response.writeHead(200, {"Content-Type": "text/html"}); 
  response.write(body); 
  response.end(); 
} 
 
function upload(response,postData) { 
 console.log("Request handler 'upload' was called."); 
 response.writeHead(200, {"Content-Type": "text/plain"}); 
 response.write("You've sent: " + querystring.parse(postData).text); 
 response.end(); 
} 
 
exports.start = start; 
exports.upload = upload; 

重新启动,依旧输入I LOVE YOU ,提交

查看图片

总结

以上就是这篇文章的全部内容了,希望这篇文章的内容对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

--结束END--

本文标题: 详解Node.Js如何处理post数据

本文链接: https://www.lsjlt.com/news/12958.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Node.js如何处理ES6模块
    目录一、两种模块的差异二、Node.js 的区分三、CommonJS 模块加载 ES6 模块四、ES6 模块加载 CommonJS 模块五、同时支持两种格式的模块一、两种模块的差异 ...
    99+
    2024-04-02
  • Python如何处理JSON数据详解
    目录什么是JSON?JSON作用为什么使用JSONJSON的使用最后什么是JSON? JSON是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据。和xml相...
    99+
    2024-04-02
  • PHP中如何处理POST请求中的数组数据?
    标题:PHP中如何处理POST请求中的数组数据? 在Web开发中,处理表单提交中的数组数据是非常常见的需求。特别是在使用POST请求传递复杂数据结构时,如何正确处理这些数组数据就显得尤...
    99+
    2024-03-13
    php 数组 post 表单提交
  • 详解如何使用Node.js连接数据库ORM
    目录ORM下载量typeormsequlizeprismaORM 在上文中我们讲了如何使用node.js mysql2连接数据库,接下来讲讲ORM 下面摘一段百科对ORM的介绍 对象...
    99+
    2022-12-19
    Node.js连接数据库ORM Node数据库ORM
  • Node.js中怎么处理POST请求并获取请求参数
    本篇内容介绍了“Node.js中怎么处理POST请求并获取请求参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!接收POST请求在Node....
    99+
    2023-07-05
  • Apache如何使用POST数据
    这篇文章将为大家详细讲解有关Apache如何使用POST数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。测试环境WEB环境服务器,并部署好SHOP系统使用Xshell连接服务器开始测试login.ab ...
    99+
    2023-06-02
  • thinkphp获取不到post数据如何解决
    这篇文章主要介绍“thinkphp获取不到post数据如何解决”,在日常操作中,相信很多人在thinkphp获取不到post数据如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp获取不到p...
    99+
    2023-07-05
  • post提交数据如何加密
    使用md5加密算法对post提交的数据进行加密,具体方法如下:public static bool IsTrue(string miyao, params string[] parm){StringBuilder sb = new Stri...
    99+
    2024-04-02
  • golang接收post和get请求参数如何处理
    这篇文章主要讲解了“golang接收post和get请求参数如何处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“golang接收post和get请求参数如何处理”吧!1、golang中获取...
    99+
    2023-07-05
  • PHP中如何获取POST数据
    PHP中如何获取POST数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。(一)表单POST方式提交情况下PHP获取POST数据$_POST 与 php://input可以取到...
    99+
    2023-06-17
  • nodejs处理http请求实例详解之get和post
    目录前言:http 请求概述Q: 从浏览器输入 url 到页面显示的整个过程?nodejs 处理 get 请求简单的 demo测试一下nodejs 处理 post 请求简单的demo...
    99+
    2023-01-28
    nodejs处理http请求 node get请求 node post请求
  • React组件如何优雅地处理异步数据详解
    目录前言API介绍SuspenseError Boundaries完整方案处理异步请求的子组件外层组件总结前言 我们在编写React应用的时候,常常需要在组件里面异步获取数据。因为异...
    99+
    2022-11-13
    React处理异步数据 React 异步数据
  • Spring MVC数据响应处理详解
    目录1. 内置视图解析器2. 使用原生servlet的对象传递数据3. 使用ModelAndView对象传输数据4. 使用Model、Map、ModelMap传输数据5. 使用ses...
    99+
    2024-04-02
  • Numpy 数据处理 ndarray使用详解
    目录1. ndarray的属性2. 数组的形状3. ndarray的类型1. ndarray的属性 数组的属性反映了数组本身固有的信息。常用的查看数组属性的相关语法如下表格所示: 属...
    99+
    2024-04-02
  • 数据处理的利器:NumPy 详解
    基本数据类型和数组 NumPy 的核心数据结构是多维数组,称为 ndarray。ndarray 存储相同数据类型的值,并且可以具有任意数量的维度。NumPy 支持各种基本数据类型,包括整数、浮点数、布尔值和复数。 数组操作 NumPy 提...
    99+
    2024-04-02
  • SpringBoot处理JSON数据方法详解
    目录前言1、创建实体类2、创建视图页面3、创建控制器前言 在Spring Boot的Web应用中 内置了JSON数据的解析功能,默认使用Jackson自动完成解析(不需要解析加载Ja...
    99+
    2022-11-13
    SpringBoot JSON数据 SpringBoot JSON处理
  • 利用Python多处理库处理3D数据详解
    今天我们将介绍处理大量数据时非常方便的工具。我不会只告诉您可能在手册中找到的一般信息,而是分享一些我发现的小技巧,例如tqdm与 multiprocessing​imap​​一起使用...
    99+
    2024-04-02
  • 探讨php post数据没有处理的原因及解决方法
    随着互联网的不断发展,网站的建设也越来越重要,而PHP语言又是网站开发的主力语言之一。在PHP网站开发中,使用POST方式提交数据是非常常见的操作。但是,有时候我们会发现POST提交的数据没有被正确处理,造成了问题。这篇文章将从几个方面分析...
    99+
    2023-05-14
  • 详解Pandas如何高效对比处理DataFrame的两列数据
    目录楔子combine_firstcombineupdate楔子 我们在用 pandas 处理数据的时候,经常会遇到用其中一列数据替换另一列数据的场景。比如 A 列和 B 列,对 A...
    99+
    2024-04-02
  • python数据处理详情
    目录一,前言二,python模块2.1,增加停用词表2.2,顺序读取2.3,lambda函数三,运行3.1,存入文件一,前言 我们现在拿到了一个十分庞大的数据集。是json文件,里面...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作