# node.js 启动HTTP服务

引入required模块:我们可以使用 require 指令来载入 Node.js 模块。

创建服务器:服务器可以监听客户端的请求。

接收请求与响应请求:服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

下面开始创建node.js应用:

(1)引入require模块

我们使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:

新建文件 http.js (D:\学习\code\demo1\http.js)

var http = require("http");
1

(2)创建服务器

接下来我们使用http.creatServer()方法创建服务器,并使用listen()方法绑定8080端口。函数通过request,response参数来接收和响应数据。实例如下:

var http = require('http');
http.createServer(function (request, response) {
 // 发送 HTTP 头部 
 // HTTP 状态值: 200 : OK
 // 内容类型: text/plain
 response.writeHead(200, {'Content-Type': 'text/plain'});
 // 发送响应数据 "Hello World"
 response.end('Hello World\n');
}).listen(8080);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8080/');
1
2
3
4
5
6
7
8
9
10
11

(3)启动

命令行输入

node http.js
1

(4)访问

访问http://127.0.0.1:8080/ (opens new window)

可以看到写着”Hello World”的网页

# node.js http服务端

const http = require('http');
const server = http.createServer();
var qs = require('querystring');
const hostname = '0.0.0.0';
const port = 8888;
server.listen(port, hostname, () => {
    console.log(`开启服务 端口:${port}/`);
});

server.on('error', function(err) {
    if (err.code === 'EADDRINUSE') {
        // 端口已经被使用
        console.log('端口【' + port + '】 已经被使用');
    } else {
        console.log('启动服务错误:' + err.message);
    }
});

server.on('request', async function(req, res) {
    console.log('请求方式:' + req.method);
    console.log('请求URL:' + req.url);

    let data = [];
    req.on('data', chunk => {
        //req对象启动data方法,此方法将会多次获取提交的数据,如果提交的数据量大的话。
        data += chunk;
    });

    req.on('end', async () => {
        console.log('请求数据:' + data);
        let requestData = qs.parse(data);
        res.setHeader('Content-Type', 'text/plain;charset=UTF-8');
        res.end(JSON.stringify(requestData));
    });
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# node.js http客户端

const http = require('http');
const qs = require('querystring');
var data = {
    key1: '6.1.0',
    key2: 'UTF-8',
}; //这是需要提交的数据

var content = qs.stringify(data);

var options = {
    hostname: '127.0.0.1',
    port: 8888,
    path: '/test',
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    },
};
let req;

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.write(content);
req.end();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35