http模块是Node.js官方提供创建web服务器的模块,在使用http模块前首先导入http模块
目录
1 一些概念
1.1 IP
1.2 域名
1.3 端口
2 创建一个基本的web服务器
3 req请求对象
4 res响应对象
5 不同地址获取不同响应
6 在服务中加载html文件
6.1 基础功能
6.2 优化url
1 一些概念
1.1 IP
每一个服务器都有他自己的IP,有的使用了域名挡住了IP,你可以使用ping看到域名下的ip
直接访问IP也可以打开百度的首页
1.2 域名
每一个域名对应着一个IP,域名相对于IP更好记,本机的IP是127.0.0.1,对应的域名是localhost
1.3 端口
一个IP可以开多个服务,通过请求不同的端口可以得到不同的响应,在浏览器中如果直接输入IP,访问的端口默认是80
一个端口只能被一个服务占用
2 创建一个基本的web服务器
分为4步
- 导入http模块
- 创建server实例
- 给server实例绑定request事件
- 部署在某一个端口上
- 箭头函数与function() {}是一样的,不了解箭头函数的可以看一下这个 https://blog.csdn.net/potato123232/article/details/124706016
运行一下
- 如果你对代码做了修改,且你想使修改生效,那么你需要重新启动一遍代码
这个时候你的PowerShell是阻塞的,你不要关了这个终端,关了服务就没了
我们用浏览器访问一下,发现有请求记录
但是在浏览器上没有得到响应
3 req请求对象
req请求对象就是上面我们server绑定request的第一个参数
有下面几个常用属性,返回值的类型都是字符串
- req.url 请求的地址
- req.method 请求的方法
我们随便看几个
运行一下
用浏览器先访问 127.0.0.1 再访问 127.0.0.1/test
如果用postman或者Ajax这种就可以发一个post请求,在这里我就不测试了
4 res响应对象
比如我们想响应给客户端一些内容,我们可以使用res.end()
- res.end()中可以写html字符串
运行后无论你访问哪一个路由都会显示hello
如果直接给中文会就会乱码
这个时候我们要对响应头进行一些设置
5 不同地址获取不同响应
6 在服务中加载html文件
6.1 基础功能
可以用fs,path模块配合http模块来加载html文件
我当前的项目结构是这样的,server.js是服务,index.html,index.css,index.js与server.js在相同的路径下
server.js代码
- 如果设置响应头为这样 res.setHeader('Content-Type','text/html;charset=utf8') 会导致CSS与JS加载不出来
6.2 优化url
可以优化一下url,让用户输入起来更方便,实质上对url进行一些处理就好了