引入http模块

开启一个本地服务器需要Node.js中http核心模块
http—模块提供了搭建本地服务器的API,首先我们在项目中引入;

  1. let http = require('http')

创建服务器实例

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

  1. let server = http.createServer() // createServer()方法返回一个server实例,所以我们需要一个变量来接收

经过以上两步,我们已经搭建好了一个服务器实例,然后我们给服务器实例绑定接收request的事情处理函数,代码如下:

监听请求

  1. server.on('request', (req, res) => {
  2. console.log(req.ur l) // 获取到请求的路径(请求路径永远以“/”开头)
  3. })
  4. // 给服务器绑定接收请求的处理事件,当服务器接收到客户端发送的请求后,会调用后面的处理函数,处理函数接收两个参数:请求信息对象,响应信息对象。

绑定监听端口号

绑定监听端口号,开启服务器。代码如下:

  1. server.listen(3000, () => {
  2. console.log('服务器开启成功,可以通过访问http://127.0.0.1:3000/来获取数据~~')
  3. })
  4. // server.listen()用来绑定监听的端口号,可以传入第二个参数,当服务器开启成功后,触发后面的回调函数

例子

需求说明

当我们访问“http://127.0.0.1:3000/login”, 服务器返回 “login page”
当我们访问“http://127.0.0.1:3000/register”, 服务器返回 “register page”
当我们访问“http://127.0.0.1:3000/”, 服务器返回 “index page”
当我们访问“http://127.0.0.1:3000/product”, 服务器返回 产品信息列表
我们实现这个需求,只需要在绑定服务器监听的事件处理函数中获取到用户的请求路径,然后根据不同路径返回不同数据即可

代码实现

创建 httpserver.js文件

  1. let http = require('http')
  2. let server = http.createServer()
  3. server.on('request', (req, res) => {
  4. let url = req.url //得到请求的路径 (请求的路径永远以‘/’开头)
  5. if (url === '/') {
  6. res.end('index page')
  7. } else if (url === '/login') {
  8. res.end('login page')
  9. } else if (url === '/register') {
  10. res.end('register page')
  11. } else if (url === '/product'){
  12. let arr = [
  13. {
  14. name: 'iphone X',
  15. price: 8888
  16. },
  17. {
  18. name: 'iphone 7',
  19. price: 4320
  20. }
  21. ]
  22. // 响应的数据类型必须是字符串或者二进制数据
  23. res.end(JSON.stringify(arr))
  24. } else {
  25. res.end('404 NOT found')
  26. }
  27. })
  28. server.listen(3000, () => {
  29. console.log('服务器启动成功了,,可以访问http://127.0.0.1:3000/啦')
  30. })

运行服务

  1. node httpserver.js

分别请求路径,我们看到我们请求不同的路径,服务器给我们返回了不同的内容,并且显示在了网页中。


设置状态码和响应头

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

设置响应头

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

写入内容

  1. response.write(fileData);

结束响应

  1. response.end();