• 在nodejs中 Object的toString()方法 querystring的stringify() JSON.stringify()


    刚学nodejs,做到一个例子:发送简单的HTTP请求。遇到一个问题,客户端给服务端发送的消息到服务端,服务端收不到消息,确切的说是“”。

    以下是服务端代码:server.js

    const http = require("http");
    const qs = require("querystring")
    
    http.createServer(function(request,response){
        var body ="";
        request.on("data",function(chunk){
            body+=chunk;
        })
        request.on("end",function(){
            response.writeHead(200,{"ContentType":"text/html;charset=utf-8"});
            console.log(body)
            process.stdout.write("got name :"+ qs.parse(body)["name"]+"
    ")
        })
    
    
    }).listen(3000);
    

     以下是客户端代码:

    var http = require("http");
    var qs = require("querystring")
    
    
    var options = {
        hostname: '127.0.0.1',
        port: 3000,
        path: '/',
        method: 'POST',
    };
    
    
    function getname(theName){
    var b = {name:theName};
    var a=qs.stringify(b)
    console.log(typeof theName)
    console.log("theName:"+theName+" ,b转换为string后的a:"+a);
    http.request(options,function(response){
    response.setEncoding('utf8');
    var body ="";
    response.on('data', function(chunk){
    body+=chunk;
    });
    response.on('end',function (){
    process.stdout.write("client compate! ");
    })
    }).end(a);
    }
    //正确代码 process.stdin.on("data",function(inputData){ process.stdout.write("your name:"+inputData); console.log("输入内容: "+inputData+" 转换为string后:"+inputData.toString().replace(" ",""))//inputData 有回车 getname(inputData.toString().replace(" ","")); })

    //错误代码
    process.stdin.on("data",function(inputData){ process.stdout.write("your name:"+inputData); getname(inputData); })

    服务端,在这里无需多说。我们看到客户端的错误代码:这里,没有对接收到的“用户输入数据”的inputData处理,所以这里的inputData是Object类型;

    看到客户端反馈结果:

    服务端的返回结果:

    相继查看了b的类型:

    相信这里已经知道了问题的根源:获得的参数是一个buffer类型的,导致后面解析出问题。那么在调用getname的时候把参数转换好就行了。这个逻辑应该可行。

    但是在这里我就有一个疑问,这个接收到的输入的对象该怎么转换呢?

    querystring:其中nodejs中有一个模块,querystring,作用是对URL的查询字符串进行解析;有stringify() 和parse()两个方法,一个是转字符串,一个是解析为对象;

    JSON处理JSON字符串的;JSON.stringify()可以解析为string;

    toString()方法:都可以解析为string

    这里我们采用的是inputData.toString().这里只是传递参数,也不是跟URL相关,自然用这个。好了问题解决!

  • 相关阅读:
    数据库连接池
    一致性hash
    java 集合大家族
    linkedlist
    HashMap
    hashcode
    Job 逻辑执行图
    CDN
    网站缓存
    Mysql临时文件目录控制
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/7504659.html
Copyright © 2020-2023  润新知