使用Node.js可以搭建一个简易的HTTP服务。下面是实现此功能的攻略:
步骤一:安装Node.js
在Node.js官网中 https://nodejs.org/zh-cn/下载并安装Node.js。
步骤二:创建项目
在命令行中输入以下指令创建项目:
mkdir node_http_server
cd node_http_server
npm init
npm init将根据项目的需求生成package.json文件。
步骤三:安装依赖
在项目目录下执行以下指令:
npm install --save http
此处使用 http 模块作为实现web服务器的基础模块。
步骤四:创建 HTTP 服务器
创建 server.js,将以下代码复制进去:
const http = require('http')
const hostname = '127.0.0.1'
const port = 8080
const server = http.createServer((req, res) => {
res.statusCode = 200
res.setHeader('Content-Type', 'text/plain')
res.end('Hello World\n')
})
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`)
})
运行以下命令启动服务器:
node server.js
在浏览器中输入http://127.0.0.1:8080,您将看到Hello World。
示例说明1: 返回HTML页面
我们现在来更改刚才的代码以返回HTML页面。创建一个名为index.html的文件并将以下代码复制到其中:
<!DOCTYPE html>
<html>
<head>
<title>Node.js HTTP Server</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
然后在server.js中用以下代码更改:
const http = require('http')
const fs = require('fs')
const path = require('path')
const hostname = '127.0.0.1'
const port = 8080
const server = http.createServer((req, res) => {
console.log('Request for ' + req.url + ' by method ' + req.method)
if (req.method == 'GET') {
var fileUrl
if (req.url == '/') fileUrl = '/index.html'
else fileUrl = req.url
var filePath = path.resolve('./public' + fileUrl)
const fileExt = path.extname(filePath)
if (fileExt == '.html') {
fs.exists(filePath, (exists) => {
if (!exists) {
res.statusCode = 404
res.setHeader('Content-Type', 'text/html')
res.end('<html><body><h1>Error 404: ' + fileUrl + ' not found</h1></body></html>')
return
}
res.statusCode = 200
res.setHeader('Content-Type', 'text/html')
fs.createReadStream(filePath).pipe(res)
})
}
else {
res.statusCode = 404
res.setHeader('Content-Type', 'text/html')
res.end('<html><body><h1>Error 404: ' + fileUrl + ' not a HTML file</h1></body></html>')
return
}
}
else {
res.statusCode = 404
res.setHeader('Content-Type', 'text/html')
res.end('<html><body><h1>Error 404: ' + req.method + ' not supported</h1></body></html>')
return
}
})
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`)
})
现在访问http://127.0.0.1:8080/,您将看到index.html中的Hello World。
示例说明2: 返回JSON数据
我们现在来更改刚才的代码以返回JSON数据:
const http = require('http')
const hostname = '127.0.0.1'
const port = 8080
const server = http.createServer((req, res) => {
console.log('Request for ' + req.url + ' by method ' + req.method)
if (req.method == 'GET') {
if (req.url == '/data') {
res.statusCode = 200
res.setHeader('Content-Type', 'application/json')
res.setHeader('Access-Control-Allow-Origin', '*')
res.end(JSON.stringify({
message: 'Hello World!',
code: 200
}))
}
else {
res.statusCode = 404
res.setHeader('Content-Type', 'text/html')
res.end('<html><body><h1>Error 404: ' + req.url + ' not found</h1></body></html>')
}
}
else {
res.statusCode = 404
res.setHeader('Content-Type', 'text/html')
res.end('<html><body><h1>Error 404: ' + req.method + ' not supported</h1></body></html>')
}
})
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`)
})
现在访问http://127.0.0.1:8080/data,您将看到JSON数据。
这个攻略覆盖了如何使用Node.js搭建简易的HTTP服务的基础和示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用nodejs搭建一个简易HTTP服务的实现示例 - Python技术站