[Node.js]get/post请求
摘要
在很多情况下,我们的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.cnblogs.com/wolf-sun/
博客版权:如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2014-02-27 [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!