• node.js GET与POST请求


    node.js GET与POST请求

     
    var http = require('http');
    var url = require('url');
    
    createServer();
    submitByGet();
    submitByPost();
    
    function createServer() {
        http.createServer(function(req, res){
            if(req.method.toUpperCase() == 'GET') {
                res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
                res.write('submit by ' + req.method.toUpperCase() + '
    ');
                //url.parse后得到的是一个json对象
                res.write(JSON.stringify(url.parse(req.url))+'
    ');
                //虽然说url.parse后是一个json对象,但是用点号('.')取得它的值以后就是一个字符串对象了
                res.end(url.parse(req.url).query+'
    ');
            } else if (req.method.toUpperCase() == 'POST') {
                res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
                var postData = 'submit by ' + req.method.toUpperCase() + '
    ';
                //因为post方式的数据不太一样可能很庞大复杂,所以要添加监听来获取传递的数据
                req.addListener('data', function(data) {
                    postData += data;
                }).addListener('end', function(data) {
                    res.write(postData+'
    ');
                    //url.parse后得到的是一个json对象
                    res.end(JSON.stringify(url.parse(req.url))+'
    ');
                });
            } else {
                res.writeHead(404, {'Content-Type': 'text/plain;charset=utf-8'});
                res.end("{'errcode':404,'errmsg':'404 网页未找到'}
    ");
            }
        }).listen(8080, function(){
            console.log('listen on port 8080...');
        });
    }
    
    //因为绝大数网络请求都是get请求,所以官方单独对get请求做了个简化版
    function submitByGet() {
        var urlPath = 'http://127.0.0.1:8080/index.html?' + encodeURIComponent('name=龙神&password=123456');
        http.get(urlPath, function(response){
            response.setEncoding('utf-8');
            console.log('状态码 : ' + response.statusCode);
            console.log('response.headers = ' + JSON.stringify(response.headers));
            //注意:这里如果不赋空值的话,undefined会被转为string添加进去
            var receivedData = '';
            response.on('data', function(chunk) {
                receivedData += chunk;
            }).on('end', function() {
                //默认获取的数据是经过encodeURL之后的数据,需要使用decode解码
                console.log('receivedRawData : ' + receivedData);
                console.log('receivedDecodeData : ' + decodeURIComponent(receivedData));
            });
        }).on('error', function(e){
            console.error(e.message);
        });
    }
    
    function submitByPost() {
        //以键值对的形式构造的变量默认情况下都是一个对象
        var sendData = {'name':'chy龙神', 'password':'123456'};
        var postData = encodeURIComponent(JSON.stringify(sendData));
        //只有post时,才需要Content-Length
        var req = http.request({port:'8080', path:'http://localhost:8080/index.html', method:'POST', headers:{'Content-Type':'application/x-www-form-urlencoded'}, 'Content-Length': postData.length}, function(response){
            response.setEncoding('UTF8');
            console.log('状态码 : ' + response.statusCode);
            console.log('response.headers = ' + JSON.stringify(response.headers));
            //注意:这里如果不赋空值的话,undefined会被转为string添加进去
            var receivedData = '';
            response.on('data', function(chunk) {
                receivedData += chunk;
            }).on('end', function(){
                //默认获取的数据是经过encodeURL之后的数据,需要使用decode解码
                console.log('receivedRawData : ' + receivedData);
                console.log('receivedDecodeData : ' + decodeURIComponent(receivedData));
            });
        }).on('error', function(e){
            console.error(e.message);
    
        });
        //write仅对post方法有效
        req.write(postData);
        //end方法可以和request方法连写,但是write不可以
        req.end();
    }
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>get-post-demo</title>
    </head>
    <body>
    <form method="get" action="http://127.0.0.1:8080" >
        <input name="name" type="text" value="freddon" />
        <input name="password" type="password" value="123456"/>
        <input type="submit" value="submit by GET" />
    </form>
    <form method="post" action="http://127.0.0.1:8080" >
        <input name="name" type="text" value="freddon" />
        <input name="password" type="password" value="123456"/>
        <input type="submit" value="submit by POST" />
    </form>
    </body>
    </html>
  • 相关阅读:
    Java基础之:构造方法(构造器)与this关键字
    Java基础之:属性与局部变量作用域
    Java基础之:方法重载与可变参数
    Java基础之:成员方法与传参机制
    Java基础之:类与对象
    Java基础之:数组练习题
    Java基础之:二维数组
    Promise对象的简单用法
    如何用vue-cli初始化一个vue项目
    get和post请求的区别
  • 原文地址:https://www.cnblogs.com/it-tsz/p/12032901.html
Copyright © 2020-2023  润新知