NodeJS,url、querystring和querystringify模块,接收请求参数

NodeJS提取网址参数

querystringify模块

querystring,将url请求地址后的参数转化为对象,也可以把对象转化为url后的参数,便利对url的操作,npm install querystring -D,“querystring”已弃用。

代码案例

const querystring = require(“querystring”);let url = “/get?id=123456&name=%E5%BC%A0%E4%B8%89”;console.log(“uri”, url.split(‘?’)[0]);let param = url.split(‘?’)[1];let obj = querystring.parse(param);console.log(“obj”, obj);console.log(“obj.id=”, obj.id, “obj.name=”, obj.name);let obj2 = { id: 345678, name: “张三”, hobby: [“play”, “com1”, “com2”]};var o2s = querystring.stringify(obj2);console.log(“o2s”, o2s);

querystringify模块

querystringify模块,qs.parse()和qs.stringify(),npm install querystringify –save,地址:https://github.com/unshiftio/querystringify。

代码案例

const qs = require(‘querystringify’);let r11 = qs.parse(‘?foo=bar’);console.log(r11); // { foo: ‘bar’ }let r12 = qs.parse(‘#foo=bar’);console.log(r12); // { foo: ‘bar’ }let r13 = qs.parse(‘foo=bar’);console.log(r13); // { foo: ‘bar’ }let r14 = qs.parse(‘foo=bar&bar=foo’);console.log(r14); // { foo: ‘bar’, bar: ‘foo’ }let r15 = qs.parse(‘foo&bar=foo’);console.log(r15); // { foo: ”, bar: ‘foo’ }let r21 = qs.stringify({ foo: ‘bar’ });console.log(r21); // foo=barlet r22 = qs.stringify({ foo: ‘bar’ }, true);console.log(r22); // ?foo=barlet r23 = qs.stringify({ foo: ‘bar’ }, ‘#’);console.log(r23); // #foo=barlet r24 = qs.stringify({ foo: ” }, ‘&’);console.log(r24); // &foo=

url模块

将url解析成对象,parse方法原型:url.parse(urlStr[, parseQueryString][, slashesDenoteHost]),可传递3个参数,1、urlStr:要解析成对象的url字符串;2、parseQueryString:是否解析查询参数,默认为false;3、slashesDenoteHost:是否以斜线解析主机名,默认为false。

代码案例

const url = require(‘url’)let urlParam = new URL(“/foo?name=%E5%BC%A0%E4%B8%89”, “http://localhost:3000”);console.log(“urlParam =”, urlParam);console.log(“name =”, urlParam.searchParams.get(“name”))

接收请求参数

接收参数,代码案例

const http = require(“http”);const url = require(“url”);// 创建Serverconst httpServer = http.createServer((req, res) => { const method = req.method; const uri = req.url.split(‘?’)[0]; console.log(“uri”, uri); if (uri == ‘/get1’) { // Get请求 let data = url.parse(req.url, true).query; res.setHeader(‘Content-Type’, ‘html/text;charset=utf-8’); console.log(“get1 data”, data); // get1 data [Object: null prototype] { id: ‘123456’, name: ‘张三’ } res.end(“data.id=” + data.id + “,data.name=” + data.name); } else if (uri == ‘/post1’) { // POST请求 let data = url.parse(req.url, true).query; res.setHeader(‘Content-Type’, ‘html/text;charset=utf-8’); console.log(“post1 data”, data); // post1 data [Object: null prototype] { id: ‘123456’, name: ‘李四’ } res.end(“data.id=” + data.id + “,data.name=” + data.name); } else if (uri == ‘/post2’) { // POST请求(JSON) let postData = “”; // 数据块接收中 req.on(“data”, function (postDataChunk) { postData += postDataChunk; }); // 接收完毕 req.on(“end”, function () { let jsonObject = JSON.parse(postData); console.log(“postData=”, postData); res.setHeader(‘Content-Type’, ‘html/text;charset=utf-8’); console.log(“jsonObject.id=”, jsonObject.id); console.log(“jsonObject.name=”, jsonObject.name); res.end(“jsonObject.id=” + jsonObject.id + “,jsonObject.name=” + jsonObject.name); }); }});httpServer.listen(3000, function () { console.log(“http server port:”, 3000);});

模拟实现路由,代码案例

server.js

const http = require(“http”);var url = require(“url”);var router = require(“./module/router.js”);// 创建Serverconst httpServer = http.createServer((request, response) => { if (request.url !== ‘/favicon.ico’) { let pathname = url.parse(request.url).pathname; console.log(“pathname.”, pathname); pathname = pathname.replace(///, ”); console.log(“pathname..”, pathname); router[pathname](request, response); }});// 监听httpServer.listen(3000, function () { console.log(“http server port:”, 3000);});

modulerouter.js

module.exports = { // http://127.0.0.1:3000/demo1 demo1: function (req, res) { res.end(“demo1”); }, // http://127.0.0.1:3000/demo2 demo2: function (req, res) { res.end(“demo2”); }}

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月17日
下一篇 2022年6月17日

相关推荐

  • 原神须弥对应哪个国家 须弥是哪个国家原型分享

    原神中的草之国须弥即将要在游戏中登场了,根据目前游戏中其他几个国家来推断,每个国家都是有其设计原型的,比如璃月的原型是中国,稻妻的原型是日本,那么须弥的国家原型是什么呢?是不是有很…

    2022年8月13日
  • 吴京IP地址暴露,被指白眼狼,网友被事实打脸

    前段时间,微博等平台,都强制显示了IP地址,显示出来是为了遏制网络暴力,但没想到却让一些人受到了无妄之灾。 其中不少网友发现,一些明星艺人所在地的IP显示地址不相符,这就显示出了哪…

    2022年5月11日
  • AI文本翻译系统质量提升44%,利用超500亿参数翻译200种语言

    Meta Platforms今天开放了NLLB-200的系统代码,NLLB-200是Meta内部开发的一个人工智能系统,可以翻译200种语言的文本。 Meta还公布了一套工具,旨在…

    2022年7月8日
  • 华为Nova10系列正式入网:参数规格更清晰,并有5G网络加持

    自从解决了供货方面的压力之后,华为手机的发展速度真的得到了很大幅度的提升,不仅带来了多款新机,在老机型的供应上也没有以往的压力。 而且时间来到下半年之后,华为已经开始筹备新机,除了…

    2022年6月15日
  • 手游、模拟器通吃的GPD XP Plus 全功能游戏掌机

    SteamDeck 不少小伙伴们应该有所耳闻,但由于其生态封闭,看来只是打造成了 Steam 自家的专用封闭掌机了!而对于 PS2、PSP、WII 这些承载了太多玩家经典记忆的游戏…

    2022年6月28日
  • Java程序员不喜欢Golang的地方 – Gavin

    我爱Go。从我开始使用这种语言的第一天起,我就迅速爱上了它。它提供了令人难以置信的简单性,同时保持了出色的类型安全和快如闪电的编译。它的执行速度非常快,并发性是一流的(这是一种轻描…

    2022年6月28日
  • 换了新路由,看大片再也不卡顿了

    重点说明:文中所作仅为本人从一名普通消费者的角度评价产品,内容有失偏颇,期待大家本着交流的态度深入讨论。 老妈每天刷视频,老爸每天听书,前段时间老两口天天跟我叨叨,说是网不好,看视…

    2022年6月24日
  • 从亲民款到专业款,挑选电子阅读器主要看哪些参数?教你国产品牌如何挖到宝

    摘要:容量、尺寸、分辨率……选购电子阅读器主要看哪些参数?国产品牌有哪些值得买呢? 从千元以下的亲民款,到5000元上下的专业款,近年来国产阅读器不断涌现。目前主流国产电子阅读器基…

    2022年6月17日
  • Realme GT2大师探索版颜值参数来了,骁龙8Plus跑分曝光,可以?

    Realme GT2大师探索版外观与配置来了,颜值上看个人喜欢吧。机身正面采用一块6.7英寸的国产居中打孔柔性OLED屏,支持10亿色彩显示,分辨率2412X1080,屏幕刷新率1…

    2022年6月18日
  • 5分钟熟悉Ansible集群运维工具

    【写在最前】我们在平时的编程学习中,或多或少,或早或晚,都要接触到linux服务器;当你工作中接触的服务器比较多(或者你致力于成为一名合格的linux集群运维人员),那么ansib…

    2022年6月20日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息