以下是在Node.js中创建Web应用程序的主要核心网络模块:
net / require("net") the foundation for creating TCP server and clients dgram / require("dgram") functionality for creating UDP / Datagram sockets http / require("http") a high-performing foundation for an HTTP stack https / require("https") an API for creating TLS / SSL clients and servers
http模块有一个函数createServer,它接受一个回调并返回一个HTTP服务器。
在每个客户端请求,回调传递两个参数 - 传入请求流和传出服务器响应流。
要启动返回的HTTP服务器,请调用其在端口号中传递的listen函数。
例子
下面的代码提供了一个简单的服务器,监听端口3000,并简单地返回“hello client!” 每个HTTP请求
var http = require("http"); //from www.w3cschool.cnvar server = http.createServer(function (request, response) { console.log("request starting..."); // respond response.write("hello client!"); response.end(); }); server.listen(3000); console.log("Server running at http://127.0.0.1:3000/");
要测试服务器,只需使用Node.js启动服务器。
$ node 1raw.js Server running at http://127.0.0.1:3000/
然后在新窗口中使用curl测试HTTP连接。
$ curl http://127.0.0.1:3000 hello client!
要退出服务器,只需在服务器启动的窗口中按Ctrl + C。
检查接头
curl发送的请求包含几个重要的HTTP标头。
为了看到这些,让我们修改服务器以记录在客户端请求中接收的头。
var http = require("http"); //www.w3cschool.cnvar server = http.createServer(function (req, res) { console.log("request headers..."); console.log(req.headers); // respond res.write("hello client!"); res.end(); }).listen(3000); console.log("server running on port 3000");
现在启动服务器。
我们将要求curl使用-i选项注销服务器响应头。
$ curl http://127.0.0.1:3000 -i HTTP/1.1 200 OK Date: Thu, 22 May 2014 11:57:28 GMT Connection: keep-alive Transfer-Encoding: chunked hello client!
如你所见,req.headers是一个简单的JavaScript对象字面量。你可以使用req ['header-name']访问任何标头。
设置状态代码
默认情况下,状态代码为200 OK。
只要标头未发送,你就可以使用statusCode响应成员设置状态代码。
response.statusCode = 404;