HTTP模块
Node.js 有一个内置的HTTP模块,允许 Node.js 使用超文本传输协议(HTTP)传输数据。
我们使用 require
函数来引入 HTTP 模块。
- var http = require('http')
Node.js作为web服务器
HTTP 模块可以创建一个 HTTP 服务器,监听服务器端口,并给客户端返回响应信息。
使用 createServer
方法来创建一个 HTTP 服务器:
- var http = require('http');
- //create a server object:
- http.createServer(function (req, res) {
- res.write('Hello World!'); //write a response to the client
- res.end(); //end the response
- }).listen(8080); //the server object listens on port 8080
传递到 http.createServer()
中的回调函数,将会在访问 8080 端口时被执行。
把上述代码保存到一个命名为 demo_http.js
的文件中,并初始化该文件:
- C:\Users\Your Name>node demo_http.js
如果你遵循了上述步骤,访问 http://localhost: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
表示 ok
。第二个参数是一个包含响应头部的对象。
读取查询字符串
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
的文件中,并初始化文件。
- C:\Users\Your Name>node demo_http_url.js
如果你遵循了上述的步骤,访问以下两个地址,你将会得到两个不同的结果。
会产生这个结果: /summer
会产生这个结果: /winter
分割查询字符串
有一些内置模块可以很容易地把查询字符串分割为可读的结构,比如 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
的文件,并初始化文件。
- C:\Users\Your Name>node demo_querystring.js
访问以下地址:
http://localhost:8080/?year=2017&month=July
会产生这个结果: 2017 July
下一步
订阅更新,获取更多学习资料,请关注我们的 微信公众号 :