剧场模式
首页后端Nodejs轻松学 nodejs - 基础篇

轻松学 Node.js - 基础篇 #15 web 服务器 part 7 使用 GET 或 POST 请求发送数据

求知小风 · 元婴发布于
7

https://nodejs.org/dist/latest-v9.x/docs/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost

https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/

server.js

var http = require('http');
var fs = require('fs');
var url = require('url');
var querystring = require('querystring');

function startServer(route, handle) {
    var onRequest = function(request, response) {
        var pathname = url.parse(request.url).pathname;
        console.log('Request received ' + pathname);
        var data = [];
        request.on("error", function(err) {
            console.error(err);
        }).on("data", function(chunk) {
            data.push(chunk);
        }).on('end', function() {
            if (request.method === "POST") {
                if (data.length > 1e6) {
                    request.connection.destroy();
                }
                data = Buffer.concat(data).toString();
                route(handle, pathname, response, querystring.parse(data));
            } else {
                var params = url.parse(request.url, true).query;
                route(handle, pathname, response, params);
            }
        });
    }

    var server = http.createServer(onRequest);

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

module.exports.startServer = startServer;

handler.js

var fs = require('fs');

function home(response) {
    response.writeHead(200, { 'Content-Type': 'text/html' });
    fs.createReadStream(__dirname + '/index.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, params) {
    response.writeHead(200, { 'Content-Type': 'application/json' });
    response.end(JSON.stringify(params));
}

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

index.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>hfpp2012</title>
</head>

<body>
    <form action="/api/v1/records" method="post">
        name: <input type="text" name="name" /> age: <input type="text" name="age" />
        <input type="submit" value="Submit">
    </form>
</body>

</html>
10 条回复
官方服务号
随机课程
TypeScript + Express + MongoDB 基于角色的权限控制原理与实战

TypeScript + Express + MongoDB 基于角色的权限控制原理与实战

17 个视频2 小时 17 分钟高级

Pro¥ 169.00¥ 135.20

TypeScript已完结新课程

学员(135)
mrj · 大罗ahatom · 练虚j921216063 · 道祖叶 · 太乙遇见 · 化神泛若不系之舟 · 元婴皮卡丘 · 合体xiaojian007 · 元婴@你的好友 · 元婴wangyinwei1 · 道祖scl · 元婴可爱帅 · 太乙
最新动态
mrj · 大罗学习到了9:52
ahatom · 练虚学习到了10:00
j921216063 · 道祖学习到了9:57
叶 · 太乙学习到了9:59
遇见 · 化神学习到了9:50
统计信息
    学员: 17786
    视频数量: 1049
    帖子数量: 427

© 汕尾市求知科技有限公司 | 粤ICP备19038915号 | 关注我们 | 在线学员:119

Top