NodeJS收发GET和POST请求

接收GET
  1. express框架接收:

    const express = require('express');
    app = express();
    
    app.get('/', function (req, res) {
        var url = req.query.url;
        var name = req.query.name;
        console.log(url, name);
    });
    
    app.listen(3000, function () {
        console.log('app is running at port 3000');
    });
    
    
  2. 接收GET

    var http = require('http');
    var url = require('url');
    var util = require('util');
    
    //req 请求信息   res返回信息
    http.createServer(function (req, res) {
        res.writeHeader(200, { 'Content-Type': 'text/javascript;charset=UTF-8' });  //状态码+响应头属性
    
        // 解析 url 参数
        var params = url.parse(req.url, true).query;  //parse将字符串转成对象,req.url="/?url=123&name=321",true表示params是{url:"123",name:"321"},false表示params是url=123&name=321
        res.write("网站名:" + params.name);
        res.write("\n");
        res.write("网站 URL:" + params.url);
        res.end();
    
    }).listen(3000);
    
  3. 发送GET

    var http = require('http');
    
    var qs = require('querystring');
    
    var data = {
        a: 123,
        time: new Date().getTime()
    };//这是需要提交的数据 
    
    
    var content = qs.stringify(data);
    
    var options = {
        hostname: '127.0.0.1',
        port: 3000,
        path: '/pay/pay_callback?' + content,
        method: 'GET'
    };
    
    var req = http.request(options, function (res) {
        console.log('STATUS: ' + res.statusCode);
        console.log('HEADERS: ' + JSON.stringify(res.headers));
        res.setEncoding('utf8');
        res.on('data', function (chunk) {
            console.log('BODY: ' + chunk);
        });
    });
    
    req.on('error', function (e) {
        console.log('problem with request: ' + e.message);
    });
    
    req.end();
    

    在这里插入图片描述

  4. 接收POST

    var http = require('http');
    var querystring = require('querystring');
    
    var postHTML =
        '<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>' +
        '<body>' +
        '<form method="post">' +
        '网站名: <input name="name"><br>' +
        '网站 URL: <input name="url"><br>' +
        '<input type="submit">' +
        '</form>' +
        '</body></html>';
    
    http.createServer(function (req, res) {
        //暂存请求体信息
        var body = "";
    
        //请求链接
        console.log(req.url);
    
        //每当接收到请求体数据,累加到post中
        req.on('data', function (chunk) {
            body += chunk;  //一定要使用+=,如果body=chunk,因为请求favicon.ico,body会等于{}
            console.log("chunk:", chunk);
        });
    
        console.log(body);
        //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。
        req.on('end', function () {
            // 解析参数
            body = querystring.parse(body);  //将一个字符串反序列化为一个对象
            console.log("body:", body);
            // 设置响应头部信息及编码\<br><br>      res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});
            if (body.name && body.url) { // 输出提交的数据
                res.write("网站名:" + body.name);
                res.write("<br>");
                res.write("网站 URL:" + body.url);
            } else {  // 输出表单
                res.write(postHTML);
            }
            res.end();
        });
    }).listen(3000);
    
  5. 发送POST

    var http = require('http');
    var querystring = require('querystring');
    
    var contents = querystring.stringify({
        name: 'byvoid',
        email: 'byvoid@byvoid.com',
        address: 'Zijing'
    });
    
    var options = {
        host: 'www.byvoid.com',
        path: '/application/node/post.php',
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': contents.length
        }
    }
    
    var req = http.request(options, function (res) {
        res.setEncoding('utf8');
        res.on('data', function (data) {
            console.log("data:", data);   //一段html代码
        });
    });
    
    req.write(contents);
    req.end;
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值