Nodejs获取请求参数

文章介绍了Node.js中的CommonJS模块规范,包括模块的exports接口和npm管理依赖的方法。接着讲述了如何通过http模块创建服务器,以及处理GET和POST请求参数的四种方法,包括使用URL解析、querystring模块和URLSearchParams对象。最后提供了一个结合GET和POST请求处理的简单示例。
摘要由CSDN通过智能技术生成

1、commonjs模块化

CommonJS规范规定,每个模块内部, module 变量代表当前模块。这个变量是一个对象,它的 exports 属性(即 module.exports )是对外的接口。加载某个模块,其实是加载该模块的 module.exports 属性。

环境初始化

npm init -y 在终端中运行该代码后 会生成一个package.json的文件

模块的安装

在使用nodejs时需要一些依赖 我们可以使用 nom install 来安装依赖

npm i ajax -g -g表示全安装

cnpm i ajax --save 简写 -S 表示将依赖添加到package,json中

npm i ajax --save -dev 简写 npm i ajax -D 表示生菜博士

注意点 生成的node_moudeles文件夹不可以删除

2、创建服务器

  • 通过require引入引入http
  • 通过 http.createServer创建服务  req:requset  请求res:response  响应
  • /给服务器创建端口 通过server.listen监听服务器是否启动
     
//引入http
const http = require("http");
//创建服务
const server = http.createServer((req,res)=>{
//req:requset  请求
//res:response  响应
comst method = req.method
})
//给服务器创建端口
server.listen(8080,()=>{
console.log("服务已经启动")
})

在nodejs中,代码修改后 需要我们手动重启代码,这个时候我们可以安装nodemon包 ,来解决手动重启的问题

3、获取get请求参数

方法一

从req中获取请求相关内容,使用字符串分割的方式,获取fet请求中的内容

const server = http.createServer((req,res)=>{
    res.setHeader("content-type","application/json;charset=utf-8")
    //从req中获取请求相关内容
    const{method,url}=req;
    console.log(method);
    console.log(url);
    if(method==="GET"){
        //获取get请求的参数
        //解析url
        //1  l利用字符串分割方式
        const paramsStr=url.split('?')[1];
        const paramsArr=paramsStr.split('&');
        const query={};
        paramsArr.forEach(item=>{
          const param=item.split("=");
          query[param[0]]=param[1];
        });
        //使用url中的parse函数
        const result = parse(url,true);
        req.query=result.query;
        console.log("req.query",req.query);
​
    }
});

方法二

需要安装querystring npm i qusrystring -D

const server = http.createServer((req,res)=>{
    res.setHeader("content-type","application/json;charset=utf-8")
    //从req中获取请求相关内容
    const{method,url}=req;
    console.log(method);
    console.log(url);
    if(method==="GET"){
        //获取get请求的参数
        //解析url
        // 2、利用querystring
       const paramsStr=url.split("?")[1];
       console.log(paramsStr)
       //利用querystring.deconde方法进行分割
        req.query=querystring.decode(paramsStr,"&","=");
       //res.end() 服务器给客户响应
​
        res.end(querystring.encode(req.query,'&','='));
​
    }
});

方法三

const server = http.createServer((req,res)=>{
    res.setHeader("content-type","application/json;charset=utf-8")
    //从req中获取请求相关内容
    const{method,url}=req;
    console.log(method);
    console.log(url);
    if(method==="GET"){
        //获取get请求的参数
        //解析url
​
        // 创建URLSearchParams对象
        const searchParams= new URLSearchParams(paramsStr);
         //解析字符串
        const keys = searchParams.keys();
        for(let key of keys){
             query[key]=searchParams.get(key);
         }
​
​
    }
});

方法四

从req中获取请求相关内容,使用url中的parse函数获取参数

const server = http.createServer((req,res)=>{
    res.setHeader("content-type","application/json;charset=utf-8")
    //从req中获取请求相关内容
    const{method,url}=req;
    if(method==="GET"){
        //使用url中的parse函数
        const result = parse(url,true);
       
        req.query=result.query;
        console.log("req.query",req.query);
​
    }
});

4、获取post请求的参数

if(method==="POST"){
    let postparsms = '';
    //设置请求头
    const contentType= req.header("content-type");
    req.on('data',chunk=>{
        postparsms +=chunk;
    });
    req.on('end',()=>{
        if(postparsms = ''){
             req.body = JSON.parse(postparsms);
        read.end(JSON.stringify({
            data:{},
            message:"成功"
        }))
        }else{
             
        read.end(JSON.stringify({
            data:req.body,
            message:"成功"
        }))
        }
       
    })
​
}

5、应用

下面是一个简单的demo,对get  post 请求进行练习

//引入http
const http=require ('http');
const{parse} = require('url');


//创建服务器
const server = http.createServer((req,res)=>{
    //设置响应头
    res.setHeader('content-type', 'application/json;charset=utf-8');
    //获取参数
    const{url,method}=req;
    const obj=parse(url,true); //解析url
    req.query=obj.query;  //将get请求得到的参数放到query中
    //请求地址
    const pathName=obj.pathname;
    if(method==='GET'&&pathName==='/api/Blogs'){
        //获取博客信息
    const blogs=[{
        id:'1',
        title:'aa',
        content:'aa的博客'
    },{
        id:'2',
        title:'bb',
        content:'bb的博客'
    }];
    //获取参数
    const id=req.query.id;
    let arr=blogs;
    if(id){
        arr=blogs.filter(blog=>blog.id===1);

    }
    res.end(JSON.stringify({
        status:200,
        ok:true,
        data:arr
    }));

}else if(method==='POST'&&pathName==='/api/login'){
    let postParams='';
    req.on('data',chunk=>{
        postParams+=chunk;
        });
        req.on('end',()=>{
            //将post请求的结果放到req.body中
            req.body = JSON.parse(postParams)
            
            //登录信息
            const {sid,password}=req.body;
            if(sid==='admin'&&password==="123456"){
                res.end(JSON.stringify({
                    code:1,
                    message:"登录成功",
                    token:'qwer',
                }));
                
            }else{
                res.end(JSON.stringify({
                    code:1,
                    message:"用户密码错误",
                    token:'  '                
                }));

            }
        
        })
}});
server.listen(8081,()=>{
    console.log('服务器已经启动')
})

以上就是Nodejs中收取请求参数的几个方法啦

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值