最适合网络开发者的网站
NodeJS。初学者课程。W3Schools 英文版

尿素

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(函数(req,res){
res.write('Hello World!'); //向客户端写一个响应
res.end(); //结束响应
}).listen(8080); //服务器对象监听 8080 端口
运行示例 »

函数传入 http.createServer() 方法,将在有人尝试通过端口 8080 访问计算机时执行。

将上述代码保存在名为“demo_http.js”的文件中,并启动该文件:

启动demo_http.js:

C:\用户\你的名字>节点演示_http.js

如果您在计算机上执行相同的步骤,您将看到与示例相同的结果: http://本地主机:8080


添加 HTTP 标头

如果 HTTP 服务器的响应应该显示为 HTML,则应该包含具有正确内容类型的 HTTP 标头:

例子

var http = require('http');
http.createServer(函数(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('你好,世界!');
重发();
}).监听(8080);
运行示例 »

第一个参数 res.writeHead() 方法是状态码,200 表示一切正常,第二个参数是一个包含响应头的对象。


读取查询字符串

函数传入 http.createServer() 有一个req 表示来自客户端的请求的参数,作为对象(http.IncomingMessage 对象)。

该对象有一个名为“url”的属性,它保存了域名后面的 url 部分:

演示_http_url.js

var http = require('http');
http.createServer(函数(要求, res){
res.writeHead(200,{'Content-Type':'text/html'});
res.写入(请求的网址);
重发();
}).监听(8080);

将上述代码保存在名为“demo_http_url.js”的文件中并启动该文件:

启动demo_http_url.js:

C:\用户\你的名字>节点演示_http_url.js

如果你在计算机上执行了相同的步骤,打开这两个地址时应该会看到两个不同的结果:

http://localhost:8080/夏季

将产生这样的结果:

/夏天
运行示例 »

http://localhost:8080/冬季

将产生这样的结果:

/冬天
运行示例 »

拆分查询字符串

有内置模块可以轻松地将查询字符串拆分为可读的部分,例如 URL 模块。

例子

将查询字符串拆分为可读的部分:

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

http.createServer(函数(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
var q = url.parse(req.url, true).query;
变量 txt = 问年份 + " " + q.月;
res.结束(txt);
}).监听(8080);

将上述代码保存在名为“demo_querystring.js”的文件中并启动该文件:

启动demo_querystring.js:

C:\用户\你的名字>node demo_querystring.js

地址:

http://localhost:8080/?year=2017&month=July

将产生这样的结果:

2017 年 7 月
运行示例 »

了解有关 URL 模块的更多信息,请参阅 Node.js URL 模块 章节。