在网络节点中,负责消费资源的电脑 叫客户端,
负责对外提供网络资源的电脑,叫服务端。
http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。
服务器和普通电脑区别在于。服务器上安装了 web服务器软件,如IIS、Apache
就能把普通电脑变成一台服务器
服务器相关概念
ip地址
互联网上每台计算机的唯一地址,具有唯一性,只有知道对方的ip地址,才能与对应的电脑间进行通信
ip地址格式
"点分十进制"如 a.b.c.d ,其中 a,b,c,d 都是0~255之间的十进制整数,如 192.168.1.1
互联网中每台服务器,都有自己的ip地址 ,在windows终端运行 ping www.baidu.com,可查看百度服务器的ip地址
测试时,127.0.0.1可以把自己电脑当成服务器来访问
域名和域名服务器
域名就是ip地址的别名
又称网域,是由一串用点分隔的名字组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)
ip和域名是一一对应的关系,这份对应关系存放在一种叫域名解析服务器(DNS)的电脑中
dns域名解析服务器 就是提供ip地址和域名之间的转换 服务的服务器,即将域名解析为ip地址去访问
开发期间 127.0.0.1对应的域名是localhost
端口号
一台电脑中可以运行多个服务,不同的服务用端口号去标识,每个web服务对应唯一的一个端口号
每个端口号不能同时被多个服务占用,
url的80端口可以被省略
nodejs创建基本的服务器
- 导入http模块
- 创建web服务器实例
- 为服务器实例绑定request事件
- 启动服务器
const http=require('http');
//创建web服务器实例
const server=http.createServer();
server.on("request",(req,res)=>{//只要由客户端请求我们的服务器,就会触发request事件,从而调用这个事件处理函数
console.log('somenone visit out web server');
})
server.listen(2000, function () {
console.log('server running at http://127.0.0.1:2000')
})
request事件
只要由客户端请求我们的服务器,就会触发server.on绑定的request事件处理函数
req请求对象
如果想在request事件处理函数中,访问和客户端相关的数据或属性,可使用req请求对象
req是请求对象,包含了与客户端相关的数据和属性,例如
req.url 客户端请求的url
req.method 客户端的method 请求类型
server.on("request",(req,res)=>{//只要由客户端请求我们的服务器,就会触发request事件,从而调用这个事件处理函数
console.log('somenone visit out web server');
// req是请求对象,包含了与客户端相关的数据和属性,例如
// req.url 客户端请求的url
// req.method 客户端的method 请求类型
})
访问url 为 http://127.0.0.1:2000/index.html,显示如下
使用postman 发起一个post请求
显示为
res响应对象
如果想在request事件处理函数中,访问和服务器相关的数据或属性,可使用res请求对象
req是响应对象,包含了与服务器相关的数据和属性,例如要发送到客户端的字符串
res.end()方法的作用:
向客户端发送指定的内容,并结束这次请求的处理过程
const http=require('http');
const server=http.createServer();
server.on("request",(req,res)=>{//只要由客户端请求我们的服务器,就会触发request事件,从而调用这个事件处理函数
// req是响应对象,包含了与服务器相关的数据和属性,例如
// 要发送到客户端的字符串
const str=`Your request url is ${req.url},and request method is ${req.method}`;
// res.end()方法的作用
//向客户端发送指定的内容,并结束这次请求的处理过程
res.end(str);//在浏览器访问 http://127.0.0.1:600 地址 后,得到响应数据:Your request url is /,and request method is GET
})
server.listen(600, function () {
console.log('server running at http://127.0.0.1:600');
})
解决res.end() 返回数据中文乱码问题
res.end(),向客户发送中文内容时,会 出现乱码,需要手动设置内容的编码格式
res.setHeader(‘Content-Type’,“text/html; charset=utf-8”)
调用 res.setHeader() 方法,设置Content-Type响应头,解决中文乱码的问题
const str="你好世界";
res.end(str);//返回:浣犲ソ涓栫晫 出现乱码
// res.end(),向客户发送中文内容时,会 出现乱码,需要手动设置内容的编码格式
const str="你好世界";
res.setHeader('Content-Type',"text/html; charset=utf-8")
res.end(str);