如何通过nodejs 使用 GET 或 POST 请求发送数据

本文介绍如何使用Node.js创建一个简易的HTTP服务器,通过整合server.js、router.js和handler.js等模块,实现基本的路由管理和静态文件服务。此外,还展示了如何处理GET和POST请求,以及如何将查询字符串解析为JSON格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

server.js

var http = require('http');
var fs = require('fs');
var url=require('url');
var querystring = require('querystring');//json 形式转化 a=b  a:b
function startServer(route, handle) {
    var onRequest = function(request, response) {
        var pathname=url.parse(request.url).pathname;//不包括问好的
        console.log('Request received ' + pathname);
        //表单是post所以用以下方法解决
        var data='';
        request.on("error", function(err){
            console.error(err);
        }).on("data",function(chunk){ data+=chunk;}
        ).on("end",function(){
            if(request.method=='POST')
             {
            route(handle, pathname, response,JSON.stringify(querystring.parse(data)));
             }
            else{
                var parms=JSON.stringify(url.parse(request.url,true).query);
                console.log(parms)
                route(handle, pathname, response, parms);
            }
        })

        // var queryy=url.parse(request.url,true).query//问好的东西
        // console.log(queryy);
        // route(handle,pathname, response,queryy);
    }

    var server = http.createServer(onRequest);

    server.listen(3000, '127.0.0.1');
    console.log('Server started on localhost port 3000');
}

module.exports.startServer = startServer;

app.js

var server  = require('./server');
var router = require('./router');
var handler = require('./handler');

var handle = {};
handle["/"] = handler.home;
handle['/home'] = handler.home;
handle['/review'] = handler.review;
handle['/api/v1/records'] = handler.api_records;

server.startServer(router.route, handle);

handler.js

var fs=require('fs');
 function home(response)
 {
    response.writeHead(200, { 'Content-Type': 'text/html' });
    fs.createReadStream(__dirname + '/index1.html', 'utf8').pipe(response);
 }
 function review(response) {
    response.writeHead(200, { 'Content-Type': 'text/html' });
    fs.createReadStream(__dirname + '/review.html', 'utf8').pipe(response);
}

function api_records(response,query) {
    response.writeHead(200, { 'Content-Type': 'application/json' });
    console.log(query);
    response.end((query));
}

module.exports = {
    home: home,
    review: review,
    api_records: api_records
}

router.js

var fs=require('fs');
function route(handle,pathname,response,query)
{
    console.log('routing'+pathname);
    if(typeof handle[pathname]=='function')
    {
        handle[pathname](response,query);
    }
    else{
    response.writeHead(200, { 'Content-Type': 'text/html' });
    fs.createReadStream(__dirname + '/404.html', 'utf8').pipe(response);
}
}
 module.exports.route=route;

index1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <form action="/api/v1/records" method="post">
        name: <input type="text" name="name" id="">
        password: <input type="text" name='user' id=''>
        <input type="submit" value="submit">
    </form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值