一、创建基本的web服务器
我们先通过一个案例来感受一下
创建一个命名为:01-创建基本的web服务器.js的文件
// 导入http模块
const http = require('http')
// 创建web服务器
const serve = http.createServer()
// 绑定request事件
serve.on('request', function (req, res) {
console.log('Someone visit our web serve.');
})
// 启动服务器
serve.listen(8080, function () {
console.log('serve running at http://127.0.0.1:8080');
})
打开终端输入:node .\01-创建基本的web服务器.js
结果:
浏览器输入网址:http://127.0.0.1:8080
浏览器不会有反应但是终端会多一行Someone visit our web serve.
二、req请求对象
只要服务器接收到了客户端的请求,就会调用通过 server.on() 为服务器绑定的 request 事件处理函数。 如果想在事件处理函数中,访问与客户端相关的数据或属性,可以使用如下的方式:
const http = require('http')
const server = http.createServer()
// ()=>{}箭头函数
server.on('request', (req) => {
// req.url是客户端请求的URL地址
const url = req.url
// req.method为客户端请求的method地址
const method = req.method
// 综合一下
const str = `Your request url is ${url},and your request method is ${method}`
console.log(str);
})
server.listen(80, () => {
console.log('serve running at http://127.0.0.1');
})
终端调用后打开链接,最终结果:
三、res 响应对象
在服务器的 request 事件处理函数中,如果想访问与服务器相关的数据或属性,可以使用如下的方式:
在代码中添加: res.end(str)
const http = require('http')
const server = http.createServer()
// ()=>{}箭头函数
server.on('request', (req, res) => {
// req.url是客户端请求的URL地址
const url = req.url
// req.method为客户端请求的method地址
const method = req.method
// 综合一下
const str = `Your request url is ${url},and your request method is ${method}`
console.log(str);
res.end(str)
})
server.listen(80, () => {
console.log('serve running at http://127.0.0.1');
})
四、解决中文乱码问题:
当调用 res.end() 方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式:
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
const str = `您输入的url地址为${req.url},您输入的method类型为${req.method}`
res.end(str)
})
server.listen(80, () => {
console.log('server running at http://127.0.0.1');
})
运行结果:
解决此问题方法:
添加: res.setHeader('Content-Type', 'text/html;charset=utf-8')
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
const str = `您输入的url地址为${req.url},您输入的method类型为${req.method}`
// 解决中文乱码
res.setHeader('Content-Type', 'text/html;charset=utf-8')
res.end(str)
})
server.listen(80, () => {
console.log('server running at http://127.0.0.1');
})
结果: