node.js(八)----参数接收

请求方式有两种 get和post

1.get方式

    可以直接用 url 类的query方法直接取到

const fs = require('fs');
const url = require('url');  //导入url
const http = require('http');  //导入http
const querystring = require('querystring');  //导入查询字符串
const hostname = '192.168.1.108';  //ip地址   随便写   如需要在局域网内,用手机访问,则需要将其设置为电脑的ipv4地址
const port = 3000;  //端口号
const server = http.createServer((req, res) => {   //创建一个server
    res.statusCode = 200;
    res.setHeader('Content-type','text/html;charset = utf-8');
    if (req.url !== '/favicon.ico') {  //清除二次访问
        //用于测试
        login(res);
        //get提交方式方式 
        let query_get = url.parse(req.url,true).query;  //parse 第二个参数为true 返回的是一个对象  query:取得请求时传的数据
        console.log(query_get);  //{ username: '3333', psd: '55555' }
    }
});

server.listen(port, hostname, () => {  //监听server
    console.log(`服务器运行在http://${hostname}:${port}/`);
});


function login(res) {
    fs.readFile('./my_directory/demo.html','utf-8',(err,data)=>{
       if(err){
         console.log(err);
         res.end();
       }else {
           res.write(data);
       }
    });
}

2.post  

    需要用请求监听 data 事件进行数据传输,数据传输又会触发一个end事件  然后需要 querystring模块中的 querystring.parse();将请求参数解析成对象

const fs = require('fs');
const url = require('url');  //导入url
const http = require('http');  //导入http
const querystring = require('querystring');  //导入查询字符串
const hostname = '192.168.1.108';  //ip地址   随便写   如需要在局域网内,用手机访问,则需要将其设置为电脑的ipv4地址
const port = 3000;  //端口号
const server = http.createServer((req, res) => {   //创建一个server
    res.statusCode = 200;
    res.setHeader('Content-type','text/html;charset = utf-8');
    if (req.url !== '/favicon.ico') {  //清除二次访问
        //用于测试
        login(res);
        //get提交方式方式
        // post提交方式 (可以接收biget更多的参数)
        let query_post = '';  //用来暂时储存post请求的参数
        req.on('data',(data_chip)=>{   //监听reqdata事件  收到一个字节流,就在query_post加上  当接收完毕会触发一个end事件
            console.log('我是在接收中的-----'+data_chip);
            query_post += data_chip;
        });
        req.on('end',()=>{
            console.log('接收完毕!');
            console.log('没有转换的-----'+query_post);  //username=66565&psd=545455
            query_post = querystring.parse(query_post);  //query_post解析对象
            console.log('----------------');
            console.log(typeof query_post);
            console.log(query_post);  //{ username: '66565', psd: '545455' }
        });
    }
});

server.listen(port, hostname, () => {  //监听server
    console.log(`服务器运行在http://${hostname}:${port}/`);
});


function login(res) {
    fs.readFile('./my_directory/demo.html','utf-8',(err,data)=>{
       if(err){
         console.log(err);
         res.end();
       }else {
           res.write(data);
           res.end();
       }
    });
}







扫描二维码关注公众号,回复: 155177 查看本文章




猜你喜欢

转载自blog.csdn.net/qq_36709020/article/details/80140371