Nodejs 入门篇四 - HTTP 模块

| 原创 | nodejs

内建的 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);