利用Node.js GET/POST请求响应axios/ajax测试

项目迁移vue,使用了vue推荐的axios请求方式。测试axios、ajax的异同
  • html页面 - 引入jquery和ajax
  • 分别模拟了ajax/axios的get/post请求方式

在这里插入图片描述

<body>
    <button onclick="axiosFn()">axios</button>
    <button onclick="ajaxFn()">ajax</button>
    <button onclick="axiosPost()">axios-post</button>
    <button onclick="ajaxPost()">ajax-post</button>

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>

    <script>
        var axiosFn = function (params) {
            axios({
                method: 'get',
                url: 'http://127.0.0.1:8888/get?name=axios',
            }).then(function (response) {
                console.log(response);
            }).catch(function (err) {
                console.log(err);
            });
        }

        var ajaxFn = function () {
            $.ajax({
                method: 'get',
                url: 'http://127.0.0.1:8888/get?name=ajax',
                success: function (data) {
                    console.log(data);
                },
                erroe: function (data) {
                    console.log(data);
                }
            })
        }

        var axiosPost = function () {
            axios({
                method: 'post',
                url: 'http://127.0.0.1:8889',
                data: {
                    name: "axios postMsg"
                }
            }).then(function (response) {
                console.log(response);
            }).catch(function (err) {
                console.log(err);
            });
        }

        var ajaxPost = function () {
            $.ajax({
                method: 'post',
                url: 'http://127.0.0.1:8889',
                data: {
                    name: "ajax postMsg"
                },
                success: function (data) {
                    console.log(data);
                },
                erroe: function (data) {
                    console.log(data);
                }
            })
        }
    </script>
</body>
  • node 服务器端 get方法解析
var http = require("http");
var url = require("url");
var app = http.createServer(function (request, response) {
    response.setHeader('Access-Control-Allow-Origin', 'null');
    // response.writeHeader(200, {
    //     'content-type': 'text/html;charset="utf-8"'
    // });
    // 接受请求的url
    var url_json = url.parse(request.url);
    var url_str = JSON.stringify(url_json);

    if (url_json.path !== "/favicon.ico") {
        response.write(url_str);
        console.log(url_json.path);
    }
    response.end("hello world\n");
}).listen(8888, function () {
    console.log('Server running at http://127.0.0.1:8888/');
});
  • node 服务器端 post方法解析
var http = require("http");
var querystring = require("querystring");
var app = http.createServer(function (request, response) {
    response.setHeader('Access-Control-Allow-Origin', 'null');

    var postData = "";
    request.on('data', function (chunk) {
        postData += chunk;
    });
    request.on("end", function () {
        // 解析参数
        postData = querystring.parse(postData);
        console.log(postData);

    });
    response.end("hello world\n");
}).listen(8889, function () {
    console.log('Server running at http://127.0.0.1:8889/');
});
总结
  1. 例中跨域问题是因为html页面没有在服务器中运行,所以’Access-Control-Allow-Origin’, ‘null’
    关于跨域参考
    https://blog.csdn.net/flower46273736/article/details/62889077

  2. axios post 请求的时候推荐使用qs查询字符串解析和字符串化库,增加了一些安全性。
    https://www.npmjs.com/package/qs

  3. Axios/Ajax本质上都是对原生XHR的封装,只不过Axios是Promise的实现版本,符合最新的ES规范。
    axios官网
    https://www.kancloud.cn/yunye/axios/234845

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值