Node.js HTTP 模块
内置 HTTP 模块
Node.js 内置了一个名为 HTTP 的模块,它允许 Node.js 通过超文本传输协议 (HTTP) 传输数据。
要包含 HTTP 模块,请使用 require()
方法
var http = require('http');
Node.js 作为 Web 服务器
HTTP 模块可以创建一个 HTTP 服务器,监听服务器端口并向客户端返回响应。
使用 createServer()
方法创建 HTTP 服务器
示例
var http = require('http');
// 创建一个服务器对象
http.createServer(function (req, res) {
res.write('Hello World!'); // 向客户端写入响应
res.end(); // 结束响应
}).listen(8080); // 服务器对象监听端口 8080
运行示例 »
传递给 http.createServer()
方法的函数将在有人尝试访问端口 8080 上的计算机时执行。
将上面的代码保存在名为 "demo_http.js" 的文件中,并启动该文件
启动 demo_http.js
C:\Users\您的用户名>node demo_http.js
如果您在您的计算机上遵循了相同的步骤,您将看到与示例相同的结果:https://127.0.0.1:8080
添加 HTTP 头
如果 HTTP 服务器的响应应该显示为 HTML,您应该包含一个具有正确内容类型的 HTTP 头
示例
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('Hello World!');
res.end();
}).listen(8080);
运行示例 »
res.writeHead()
方法的第一个参数是状态码,200 表示一切正常,第二个参数是一个包含响应头的对象。
读取查询字符串
传递给 http.createServer()
的函数有一个 req
参数,它表示来自客户端的请求,作为一个对象 (http.IncomingMessage 对象)。
此对象有一个名为 "url" 的属性,它保存域名后面的 URL 部分
demo_http_url.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(req.url);
res.end();
}).listen(8080);
将上面的代码保存在名为 "demo_http_url.js" 的文件中,并启动该文件
启动 demo_http_url.js
C:\Users\您的用户名>node demo_http_url.js
如果您在您的计算机上遵循了相同的步骤,您应该在打开以下两个地址时看到两个不同的结果
拆分查询字符串
有内置的模块可以轻松地将查询字符串拆分为可读的部分,例如 URL 模块。
示例
将查询字符串拆分为可读的部分
var http = require('http');
var url = require('url');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var q = url.parse(req.url, true).query;
var txt = q.year + " " + q.month;
res.end(txt);
}).listen(8080);
将上面的代码保存在名为 "demo_querystring.js" 的文件中,并启动该文件
启动 demo_querystring.js
C:\Users\您的用户名>node demo_querystring.js
地址
https://127.0.0.1:8080/?year=2017&month=July
在 Node.js URL 模块 章节中了解更多关于 URL 模块的信息。