iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Node.js中参数传递的两种方式详解
  • 409
分享到

Node.js中参数传递的两种方式详解

2024-04-02 19:04:59 409人浏览 泡泡鱼
摘要

目录参数传递方式GET方式POST方式动态网页参数传递方式 在node.js中,参数传递常见的共两种方式: GET方式:通过地址栏键=值的方式进行传递。POST方式:通过表单的方式传

参数传递方式

node.js中,参数传递常见的共两种方式:

  • GET方式:通过地址栏键=值的方式进行传递。
  • POST方式:通过表单的方式传递请求数据。

GET方式

GET方式通常是在请求地址中以【?参数1=值1&参数2=值2】的格式进行传递,在node.js中可以通过获取url然后进行获取参数,如下所示:

//1.引入Http模块
var http  = require('http');
//2.创建服务
var server = http.createServer();
//3. 监听请求事件,当有请求时,触发回调函数
server.on('request',function(req,res){
    res.writeHead(200,{"content-type":"text/html;charset=utf-8"});
    var url = req.url;
    if(url.indexOf('?')>0){
        params = url.split('?')[1];
        paramArray = params.split('&');
        res.write("<h3>请求的参数为:</h3>");
        for(var index in paramArray){
            res.write(paramArray[index])
            res.write("<br />");
        }
    }
    res.end();
});

//4. 监听8080端口
server.listen(8080,function(){
    console.log("server is running");
});

运行示例,在浏览器中打开,如下所示:

POST方式

目前一般采用fORM表单的方式传递POST数据。在Node.js中,POST传递的数据在请求体中。

首先创建一个reg.html静态html页面,然后提交数据到action.html,具体如下所示:

//1.引入http模块
var http  = require('http');
var fs = require('fs');
var path = require('path');
//2.创建服务
var server = http.createServer();
var extnames = {".html":"text/html",".CSS":"text/css",".png":"image/png"};
//3. 监听请求事件,当有请求时,触发回调函数
server.on('request',function(req,res){
    var url=req.url;
    if(url==="/"){
        url="/index.html";
    }
    var localPath = './www'+url;
    var extname = path.extname(localPath);
    res.writeHead(200,{"content-type":""+extnames[extname]+";charset=utf-8"});
    if(url==="/action.html"){
        //从请求主体中获取POST方式传输的数据
        var params='';
        req.on('data',function(data){
            params += data.toString();
        });
        //监听结束事件
        req.on('end',function(){
            res.write("<h3>后台已经收到请求:</h3>");
            res.write(params);
            res.end();

        });
        return;
    }

    console.log(localPath);
    if(extname===".ico"){
        res.end();
    }else{
        fs.readFile(localPath,function(err,data){
            res.write(data);
            res.end();
        });
    }
});

//4. 监听8080端口
server.listen(8080,function(){
    console.log("server is running");
});

运行服务,然后在浏览器输入网址,如下所示:

注意:可以看出,GET方式和POST方式的参数结构都是一样的,只是GET通过URL,POST通过请求主体。

动态网页

在之前的示例中,所有的html页面都是静态页面,不会随着用户请求的变化而变化。那如何动态的变更网页呢?答案是采用模板。

首先创建一个html页面,并在页面中定义一个变量。如下所示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>这是首页</title>
        <link type="text/css" href="css/index.css" rel="external nofollow"  />
    </head>
    <body>
        <h3>这是首页</h3>
        <h3>你的访问IP为:</h3>
        <h3><%=ipAddr%></h3>
    </body>
</html>

然后在Node.js后端程序中,动态获取变量的值,并进行替换,如下所示:

var http  = require('http');
var fs = require('fs');
var path = require('path');
//2.创建服务
var server = http.createServer();
var extnames = {".html":"text/html",".css":"text/css",".png":"image/png"};
//3. 监听请求事件,当有请求时,触发回调函数
server.on('request',function(req,res){
    var url=req.url;
    if(url==="/"){
        url="/index.html";
    }
    var localPath = './www'+url;
    var extname = path.extname(localPath);
    res.writeHead(200,{"content-type":""+extnames[extname]+";charset=utf-8"});
    console.log(localPath);
    if(extname===".ico"){
        res.end();
    }else{
        fs.readFile(localPath,function(err,data){
            var ip = req.Socket.remoteAddress;
            var content  = render(data.toString(),'<%=ipAddr%>',ip);
            res.write(content);
            res.end();
        });
    }
});

//4. 监听8080端口
server.listen(8080,function(){
    console.log("server is running");
});

function render(html,name,value){
    return html.replace(name,value);
}

运行示例,在浏览器中输入http://http://127.0.0.1:8080/,如下所示:

注意:IP为客户端IP,随着访问的客户端电脑而改变。

以上示例都是Node.js的原生开发方式,存在诸多不便,后面将通过引入框架来提高开发的效率。

到此这篇关于Node.js中参数传递的两种方式详解的文章就介绍到这了,更多相关Node.js参数传递方式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Node.js中参数传递的两种方式详解

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

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

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

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

下载Word文档
猜你喜欢
  • Node.js中参数传递的两种方式详解
    目录参数传递方式GET方式POST方式动态网页参数传递方式 在Node.js中,参数传递常见的共两种方式: GET方式:通过地址栏键=值的方式进行传递。POST方式:通过表单的方式传...
    99+
    2022-11-13
  • 详解shell中脚本参数传递的两种方式
    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${10},${11}....
    99+
    2022-06-04
    shell 脚本参数传递 shell 参数传递
  • C#中参数的传递方式详解
    值类型参数按值传递 class Program { static void Main(string[] args) { ...
    99+
    2022-11-13
    C# 传递参数
  • Java参数传递方式详解
    Java中参数传递的方式是什么样的呢?是值传递还是引用传递呢? 答案是值传递。 为什么呢? 先来了解一些基础。。。。。 1. 形参&实参 形参:传递给函数/方法的参数,有确定的值 实参:定义函数...
    99+
    2023-09-16
    java 开发语言
  • 详解Mybatis多参数传递入参四种处理方式
    1.利用参数出现的顺序 利用mapper.xml <select id="MutiParameter" resultType="com.jt.mybatis.e...
    99+
    2022-11-12
  • React传递参数的几种方式
    目录父子组件之间传递参数路由传参 状态提升context引入redux父子组件之间传递参数 父组件往子组件传值,直接用this.props就可以实现 在父组件中,给需要传递...
    99+
    2022-11-12
  • pytest用例间参数传递的两种实现方式示例
    目录前言一、通过conftest创建全局变量二、使用tmpdir_factory方法总结前言 我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段,是接口B...
    99+
    2022-11-12
  • python函数的四种参数传递方式
    python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及,后两种一般...
    99+
    2023-01-30
    四种 函数 参数
  • 详解Vue路由传参的两种方式query和params
    Vue路由传参的两种方式query和params 一、router-link 1. 不带参数 <router-link :to="{name:'home'}"> <...
    99+
    2022-11-13
  • 分享Pytestfixture参数传递的几种方式
    目录1.背景2.fixture中参数传递的几种方式1)fixture中的函数返回2)与@pytest.mark.parametrize的结合3)fixture中的方法嵌套传递4)测试...
    99+
    2022-11-10
  • pytest用例间参数传递的两种实现方式是怎样的
    pytest用例间参数传递的两种实现方式是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段...
    99+
    2023-06-22
  • mybatis3中@SelectProvider传递参数方式
    mybatis3 @SelectProvider传递参数 一、通常情况下我喜欢使用实体或者vo去传参数 这样在Provide的方法中可以直接通过#{param}(param...
    99+
    2022-11-12
  • Vue中mapMutations传递参数方式
    目录通过子组件定义的方法传递参数在…mapMutations引用当然也可以写直接传递关于mapMutations的作用通过子组件定义的方法传递参数 在…m...
    99+
    2022-11-13
  • feign实现传递参数的三种方式小结
    需要注意的一点是,feign好像是无法传递list集合类型的,但是你可以通过传递对象类型,然后在接收方再次将对象装在集合中达到集合传递的效果 传递方式一:传递的都是基本数据类型 re...
    99+
    2022-11-12
  • SpringMVC中RequestBody注解的List参数传递方式
    目录RequestBody注解的List参数传递Controller方法参数:@RequestBody List<Long> idsController方法参数:@Req...
    99+
    2022-11-13
    SpringMVC RequestBody注解 RequestBody注解 List参数传递
  • Android中Intent传递对象的3种方式详解
    前言 相信Intent的用法大家已经比较熟悉了,Intent可以用来启动Activity,Service等等,同时我们也可以通过Intent来进行传递数据,当我们使用Inten...
    99+
    2022-06-06
    对象 intent传递对象 intent Android
  • 详解Flutter中数据传递的方式
    目录1、构造方法传递2、InheritedWidget3、Notification4、Stream & event_bus在Flutter中,常见的数据传递一共有以下几种: ...
    99+
    2022-11-13
  • 超详细讲解C++的三种函数传递方式
    目录一、值传递二、地址传递1.指针的有关知识2.地址传递举例三、引用传递1.引用的相关知识2.引用传递举例四、三种传参方式的比较总结一、值传递 代码如下: void swap1(in...
    99+
    2022-11-13
  • 小程序跨页面传递参数的几种方式
    当我们在开发小程序时,经常会遇到需要在不同页面之间传递数据的情况。为了实现页面间的数据传递,小程序提供了多种方法。下面将介绍几种常用的传递数据的方法。 URL参数传递:这是一种简单直接的传递数据的方式。在跳转页面时,可以在URL中添加参数来...
    99+
    2023-10-26
    小程序
  • c语言函数参数传递方式有哪几种
    C语言函数参数传递方式有以下几种:1. 值传递(Pass by Value):将实际参数的值复制给形式参数,在函数内部对形参的修改不...
    99+
    2023-09-16
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作