开启一个本地服务器需要 Node.js 中http核心模块

  1. http–模块提供了搭建本地服务器的 API,首先我们在项目中引入;
1
let http = require('http')

引入之后我们利用 http.createServer()方法得到一个服务器实例。

1
let server = http.createServer() // createServer()方法返回一个server实例,所以我们需要一个变量来接收
  1. 经过以上两步,我们已经搭建好了一个服务器实例,然后我们给服务器实例绑定接收request的事情处理函数,代码如下:
1
2
3
4
server.on('request', (req, res) => {
console.log(req.url) // 获取到请求的路径(请求路径永远以“/”开头)
})
// 给服务器绑定接收请求的处理事件,当服务器接收到客户端发送的请求后,会调用后面的处理函数,处理函数接收两个参数:请求信息对象,响应信息对象。
  1. 绑定监听端口号,开启服务器。代码如下:
1
2
3
4
server.listen(3000, () => {
console.log('服务器开启成功,可以通过访问http://127.0.0.1:3000/来获取数据~~')
})
// server.listen()用来绑定监听的端口号,可以传入第二个参数,当服务器开启成功后,触发后面的回调函数

好了,经过这简单的操作是不是已经完成了一个服务器的简单搭建,接下来我们来实现一个需求:

我们实现这个需求,只需要在绑定服务器监听的事件处理函数中获取到用户的请求路径,然后根据不同路径返回不同数据即可,这个也不难。详情代码看下:

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
let http = require('http')
let server = http.createServer()
server.on('request', (req, res) => {
let url = req.url //得到请求的路径 (请求的路径永远以‘/’开头)
if (url === '/') {
res.end('index page')
} else if (url === '/login') {
res.end('login page')
} else if (url === '/register') {
res.end('register page')
} else if (url === '/product') {
let arr = [
{
name: 'iphone X',
price: 8888,
},
{
name: 'iphone 7',
price: 4320,
},
]
// 响应的数据类型必须是字符串或者二进制数据
res.end(JSON.stringify(arr))
} else {
res.end('404 NOT found')
}
})
server.listen(3000, () => {
console.log('服务器启动成功了,,可以访问http://127.0.0.1:3000/啦')
})

设置状态码和响应头

1
response.writeHead(200, { 'Content-Type': 'text/plain' })

设置响应头

1
response.setHeader('Content-Type', 'text/html')

写入内容

1
response.write(fileData)

结束响应

1
response.end()