Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web 服务器的基本功能就是提供 Web 信息浏览服务。它只需支持 HTTP 协议、HTML 文档格式及 URL,与客户端的网络浏览器配合。
大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。
目前最主流的三个 Web 服务器是 Apache、Nginx、IIS。
- Client - 客户端,一般指浏览器,浏览器可以通过 HTTP 协议向服务器请求数据。
- Server - 服务端,一般指 Web 服务器,可以接收客户端请求,并向客户端发送响应数据。
- Business - 业务层, 通过 Web 服务器处理应用程序,如与数据库交互,逻辑运算,调用外部程序等。
- Data - 数据层,一般由数据库组成。
使用 Node 创建 Web 服务器
Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| var http = require("http") var fs = require("fs") var url = require("url")
http .createServer(function (request, response) { var pathname = url.parse(request.url).pathname
console.log("Request for " + pathname + " received.")
fs.readFile(pathname.substr(1), function (err, data) { if (err) { console.log(err) response.writeHead(404, { "Content-Type": "text/html" }) } else { response.writeHead(200, { "Content-Type": "text/html" })
response.write(data.toString()) } response.end() }) }) .listen(8080)
console.log("Server running at http://127.0.0.1:8080/")
|
接下来我们在该目录下创建一个 index.html 文件,代码如下:
1 2 3 4 5 6 7 8 9 10 11
| <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <h1>我的第一个标题</h1> <p>我的第一个段落。</p> </body> </html>
|
执行 server.js 文件
$ node server.js
接着我们在浏览器中打开地址:http://127.0.0.1:8080/index.html
使用 Node 创建 Web 客户端
Node 创建 Web 客户端需要引入 http 模块,创建 client.js 文件,代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| var http = require("http")
var options = { host: "localhost", port: "8080", path: "/index.html", }
var callback = function (response) { var body = "" response.on("data", function (data) { body += data })
response.on("end", function () { console.log(body) }) }
var req = http.request(options, callback) req.end()
|