博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js学习之(第二章:http模块)
阅读量:7081 次
发布时间:2019-06-28

本文共 1922 字,大约阅读时间需要 6 分钟。

前言

继续上一节的探讨,今天我们来聊聊Node中怎么搭建一个简单的web服务器。平时大家在撸码的过程中,经常需要向服务器发送请求,然后服务器接受请求,响应数据。今天我们就来自己手写一个简单服务器,根据前端请求,我们来响应相关数据。

开始

开启一个本地服务器需要Node.js中http核心模块,至于核心模块是什么,我会在接下来的章节中和大家解释,也欢迎大家持续关注我的前端Node.js的学习之旅。

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

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

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

我们看到请求路径被打印在了CMD窗口中。

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

  • 当我们访问“, 服务器返回 “login page”

  • 当我们访问“, 服务器返回 “register page”

  • 当我们访问“, 服务器返回 “index page”

  • 当我们访问“, 服务器返回 产品信息列表

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

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/啦')})复制代码

最后实现的效果图如下:

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

说明

本仓库是自己Node.js学习过程的真实记录,以后会每天更新一些新的知识点,希望可以对想要学Node.js的同学有一些帮助,欢迎star,你们的点赞是我更新的持久动力。同时如果你觉得本仓库中的一些知识点有错误也可以issue我,方便后期我订正!

本仓库同时在博客园和掘金更新,欢迎写博客的朋友一起学习交流。

博客园

掘金

GitHub

转载地址:http://qjtml.baihongyu.com/

你可能感兴趣的文章
网络学习目录
查看>>
《结对-贪吃蛇游戏-需求分析》
查看>>
入门01
查看>>
Guava包学习--Hash
查看>>
PAT-乙级-01
查看>>
CImage
查看>>
面向对象01
查看>>
[C++参考]私有成员变量的理解
查看>>
五.获得MYSQL数据库自动生成的主键
查看>>
小米4安装apk时出现INSTALL_FAILED_NO_MATCHING_ABIS
查看>>
窗体之间传递值的几种方法
查看>>
springboot开启定时任务 添加定时任务 推送
查看>>
html+css高度100%的时候边框超出,出现滚动条的解决办法,带边框的100%高度
查看>>
最大子段和(洛谷P1115,动态规划递推)
查看>>
nyoj 311 完全背包
查看>>
在Mac上安装Sublime Text3的插件
查看>>
自己写的demo---声明异常同时处理异常,或者继续抛出异常
查看>>
bind原理图释
查看>>
golang--性能测试和分析
查看>>
获取汉字拼音的简便方法
查看>>