内建的 HTTP 模块
Node.js 有一个叫做 HTTP 的内建模块,它可以让 Node.js 通过 HTTP 协议传输数据。
引用的方法很简单,使用上一节提到的 require()
方法就可以了:
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
当有人尝试访问 8080 端口时,传给 http.createServer()
方法的函数就会被执行。
把上面的代码保存在 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()
方法的第一个参数是 HTTP 状态码,200 表示请求成功。第二个参数是一个表示 HTTP 头部的对象。
读取请求字串
传入到 res.createServer()
方法的参数中有个 req
对象(http.IncomingMessage Obj),接受来自客户端的请求。
这个对象有一个 url 属性,对应的是请求链接中跟随在域名后的字串。
切分请求字串
Node.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);